SecureRandom random = new SecureRandom(); // quite heavy, look into a lighter method.
String stringToEncrypt = "mypassword";
byte[] realiv = new byte[16];
random.nextBytes(realiv);
Cipher ecipher = Cipher.getInstance("AES");
SecureRandom random = new SecureRandom(); // quite heavy, look into a lighter method.
byte[] realiv = new byte[16];
random.nextBytes(realiv);
byte[] secret = "somelongsecretkey".getBytes();
SecretKeySpec secretKey = new SecretKeySpec(secret, "AES");
ecipher.init(Cipher.ENCRYPT_MODE, secretKey, random);
byte[] encryptedData = ecipher.doFinal();
但init()
只接受3个参数。我需要一种方法来这样做:Android:使用AES加密字符串256位加密使用iv和密钥
ecipher.init(Cipher.ENCRYPT_MODE, stringToEncrypt, secretKey, random);
确定这是太多的错字和等,很抱歉的许多编辑,我要外面实际*唤醒*。 –
AES-256定义了128位块大小和256位密钥大小的Rijndael算法的一个版本。你刚才定义了一个32位十六进制char = 16字节= 128位的密钥。如果您有128位密钥,则不能(直接)使用AES-256。 –
'IvParameterSpec ivSpec = new IvParameterSpec(realIV);'那条线做到了 – KJW