Java Android:定义要使用的加密:AES 128或AES 256
在我使用的android项目中Java Android:定义要使用的加密:AES 128或AES 256,java,android,encryption,aes,Java,Android,Encryption,Aes,在我使用的android项目中 import javax.crypto.Cipher; ecipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 我想问:是否使用AES128或AES256,是否由使用的键定义?例如key=“0123456789012345678901234567890123456789012”是否会导致使用AES256 感谢Thomas是,是否使用AES128或AES256由正在使用的键定义 然而,决定它的不是字符串长度,
import javax.crypto.Cipher;
ecipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
我想问:是否使用AES128或AES256,是否由使用的键定义?例如key=“0123456789012345678901234567890123456789012”代码>是否会导致使用AES256
感谢Thomas是,是否使用AES128或AES256由正在使用的键定义
然而,决定它的不是字符串
长度,而是字节[]
长度。在代码中的某个时刻,您应该将字符串
转换为字节[]
。生成的字节[]
的大小是您的密钥大小。如果不知道如何转换“0123456789012345678901234567890123456789012”
,就不可能知道您的加密强度
或者,您可以使用KeyGenerator
:
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128); // or 256
// Generate the secret key specs
SecretKey secretKey = keyGen.generateKey();
byte[] byteArray = secretKey.getEncoded();
AllCipher.getInstance(“AES/CBC/PKCS5Padding”)代码>创建密码。如果您给它一个128位的密钥,它将使用AES128,如果您给它一个256位的密钥,它将使用256。你的示例键是假的。请参阅示例。您当然完全正确,但32个字符不太可能导致少于32个字节,这意味着AES-256或失败。据我所知,Java没有像其他一些愚蠢的框架那样切断或追加密钥字节。