2016-12-28 86 views
0

我想使用Windows用戶名,如密鑰來加密和解密文本。JAVA - 使用AES用戶名加密文本128 128

但是當我嘗試,關鍵是太短: 無效的AES密鑰長度:7個字節

我必須使用編碼前的關鍵?

預先感謝

+0

您是否嘗試過填充密鑰? –

回答

4

技術上 - 關鍵需要是128位長(或192或256位)。最簡單的方法是使用填充(附加一些常數值來擴展到所需的長度)。

此方法是HIGHLY INSECURE,您可以將此方法視爲編碼,而不是加密。

適當的加密需要

  • 具有關鍵祕密。事實上,如果代碼/配置駐留在用戶的工作站上,這是非常困難的,但是從安全角度來看,使用用戶名聽起來是一個非常糟糕的主意

  • 鹽的關鍵。使用隨機鹽和散列函數(例如PBKDF2)從密碼創建加密密鑰。

+0

除了使用強大的KDF之外,還可以使用適當的迭代次數(又稱「成本因子」)來緩解對派生鍵的暴力攻擊 - PBKDF2是一個不錯的選擇,但對於常見的Web需要10k到100k之間的迭代應用程序威脅模型截至2016年12月([商品硬件系統每秒可破解大約680億次SHA-1哈希值](https://gist.github.com/epixoip/a83d38f412b4737e99bbef804a270c40))。你應該調整你的KDF在託管系統上執行,同時還會給攻擊者帶來延遲。 – Andy

+0

謝謝你的回答。 你說得對,它可能是編碼而不是加密。 但目標是隱藏和解密來自應用程序的消息和設置。 我將搜索填充密鑰。 – user3216533

+0

謝謝,我會嘗試。 我只需要從一個文件加密文本以使用一個着名的軟件。 我知道關鍵,但我沒有成功的加密... – user3216533

相關問題