我需要从纯文本和任何参数(系统时间或salt)中生成一个随机密钥。这在Java中是可能的吗?我应该考虑怎样的类/方法组合来做到这一点呢?
发布于 2017-02-17 02:26:01
您可以查看javax.crypto包中的类,如
javax.crypto.Cipher;
javax.crypto.KeyGenerator;
javax.crypto.SecretKey;以下是一个例子:
public static String generateSymmetricKey() {
KeyGenerator keyGenerator;
try {
keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey key = keyGenerator.generateKey();
Cipher encodeCipher = Cipher.getInstance("AES/CTR/NoPadding");
encodeCipher.init(Cipher.ENCRYPT_MODE, key);
String bigSecret = Base64.getEncoder().encodeToString(
key.getEncoded());
return bigSecret;
} catch (Exception e) {
System.err.println("Secret Key generation failed: "
+ e.getMessage());
throw new RuntimeException(e);
}
}因此,您将得到Base64编码,按照"AES/CTR/NoPadding“规范对称密钥加密。
然后有一个问题-你真的需要一个随机的键从“纯文本”,盐,时间戳?或者你需要用密钥和盐加密你的“纯文本”?
随机键的“纯文本”用途是什么?
通常有一条路:
https://stackoverflow.com/questions/42287903
复制相似问题