我想使用AES256加密text
,我想使用我的电子邮件[email protected]
作为key
对其进行加密。
这是我尝试的:
String key = "[email protected]";
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
byte iv[] = SOME_RANDOM_32_BYTES;
IvParameterSpec ivSpec = new IvParameterSpec(iv);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
byte[] encryptedResult = cipher.doFinal(text.getBytes("UTF-8"));
当我运行上面的代码时,我得到了InvalidKeyException:
java.security.InvalidKeyException: Key length not 128/192/256 bits.
我在互联网上检查过,原因是我的密钥不是128/192/256位。我的问题是,如何从我的电子邮件字符串
[email protected]
生成256bits(32bytes)密钥? 最佳答案
您可以使用SHA256将密钥字符串([email protected]
)散列为256位值。
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(yourEmail.getBytes());
byte[] encryptionKey = md.digest();
关于java - AES-256加密:从我的固定字符串生成256bits(32bytes) key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24911604/