在我正在使用的一个 android 项目中
import javax.crypto.Cipher;
ecipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
请问:AES128 还是AES256 是用的,是用的key 定义的吗?例如key="012345678901234567890123456789012";
,结果会使用 AES256?
谢谢
托马斯
在我正在使用的一个 android 项目中
import javax.crypto.Cipher;
ecipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
请问:AES128 还是AES256 是用的,是用的key 定义的吗?例如key="012345678901234567890123456789012";
,结果会使用 AES256?
谢谢
托马斯
是的,是否使用 AES128 或 AES256 由正在使用的密钥定义。
然而,决定它的不是String
长度,而是byte[]
长度。在您的代码中的某个时刻,您应该转换String
为byte[]
. 结果的大小byte[]
就是您的密钥大小。在不知道如何转换"012345678901234567890123456789012"
的情况下,不可能知道您的加密强度。
或者,您可以使用KeyGenerator
:
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128); // or 256
// Generate the secret key specs
SecretKey secretKey = keyGen.generateKey();
byte[] byteArray = secretKey.getEncoded();