2017-04-26 234 views
-2

我正在使用以下java代碼進行AES 128位加密和解密,該代碼工作正常。對於相同的鍵和數據,每次都會給出相同的輸出。AES 128位和AES 256位加密解密

鏈接1:http://aesencryption.net/#Java-aes-encryption-example

(final String strPssword = "dAtAbAsE98765432";) 

對於AES 256位加密和解密我發現了另一個Java代碼。 它每次給我不同的輸出。

鏈接2:AES-256 Password Based Encryption/Decryption in Java

我的問題是,是否 我需要WIRTE不同的代碼爲AES 128位和256位AES? 還是他們一樣?只有密鑰大小不同?

對於256位加密,只有我需要在第一Java代碼的鏈接

public boolean setKey(String sKey){ 
    arbtKey = Arrays.copyOf(arbtKey, 32); // use only first 256 bits 
} 

public static void main(String[] aryCmdArgs) 
{ 
    final String sKey = "dAtAbAsE98765432dAtAbAsE98765432"; //256 bits 
} 

改變或我需要使用鏈接2給出代碼?

回答

1

256位密鑰加密的示例代碼使用隨機鹽,這就是爲什麼從一次執行到下一次執行輸出不同的原因。至於使用第一個(128位)示例中的代碼,您只需提供一個支持長度的密鑰。您只需提供算法名稱(「AES」),它將根據密鑰長度計算其餘部分。支持的長度是128,192和256位。