2017-07-28 43 views
0

嗯,我想用java產生AES密鑰,並提到Java的AES加密是基於「.NET」實用需要而產生的JAVA程序的關鍵,遵循規範類似aesCryptoServiceProvider

規格:「生成使用帶有Mode = ECB的AesCryptoServiceProvider的AES密鑰,Padding = PKCS7,KeySize = 256 & BlockSize = 128.「

我研究了很多,但沒有得到類似的東西,可以在Java中用來生成AES密鑰。

任何人都可以請指導我如何繼續前進,創造與上述規格相同的AES密鑰?

回答

0

對於AES密鑰,要麼使用從CSPRNG獲得的隨機字節,要麼使用密碼從PBKFD2派生密鑰。

不要在新工作中使用ECB模式並儘快更新遺留工作,這是不安全的,請參閱ECB mode,向下滾動到企鵝。相反,使用隨機IV的CBC模式,只需將IV加密的數據加在解密使用的前綴上即可,並不需要保密。

注:

Java的基本實現限制密鑰長度爲128位(這是完全安全的),爲了你必須使用Java加密擴展使用需要較大的鍵:
Java 6 JREJava 7 JREJava 8 JRE
(感謝Robert的版本信息和鏈接!)

AES只有一個塊的大小:128位。

對於Java,請參閱文檔Java Cryptography Architecture Reference Guide,特別是The Cipher Class

+0

您確定來自Java 6的鏈接Unlimited Strength策略文件在當前JRE中工作嗎? – Robert

+0

@Robert不,但沒有提到Java 6.我試圖做的主要觀點是,如果沒有Unlimited Strength功能,只支持128位密鑰,並且128位密鑰足夠長。 – zaph

+1

您發佈的鏈接指向JRE 6的Unlimited Strength策略文件。[Java 7]也有一個變體(http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download -432124.html)和[Java 8](http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html) – Robert