我想使用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/

10-11 04:53