我使用以下java代码进行AES 128位加密和解密,效果很好。对于相同的密钥和数据,它每次都给我相同的输出。
link1:http://aesencryption.net/#Java-aes-encryption-example
(final String strPssword = "dAtAbAsE98765432";)
对于AES 256位加密和解密,我发现了另一个java代码。 它每次给我不同的输出。
link2:AES-256 Password Based Encryption/Decryption in Java
我的问题是, 我是否需要为AES 128位和AES 256位编写不同的代码? 或者它们是一样的吗?只有密钥大小不同?
对于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
}
或者我需要使用link2中给出的代码?
答案 0 :(得分:1)
256位密钥加密的示例代码使用随机盐,这就是为什么输出将从一次执行到下一次执行不同的原因。至于使用第一个(128位)样本中的代码,您只需提供一个支持长度的密钥。您只需提供算法名称(“AES”),它将从密钥长度中计算出其余部分。支持的长度为128,192和256位。