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