如何做到这一点?我想把结果aes secretkey转换成明文16byte表示
public SecretKey generateAesKey() throws NoSuchAlgorithmException{
KeyGenerator keygen;
keygen = KeyGenerator.getInstance("AES");
keygen.init(128);
SecretKey aesKey = keygen.generateKey();
return aesKey;
}
我用它来生成密钥 (非常确定密钥是32字节,除非我想的是256位密钥?)
答案 0 :(得分:1)
SecretKey
类有一个方法.getEncoded()
,它将返回您的密钥。
您可以使用以下方法获取十六进制的字符串表示形式(例如):
private static String bytesToHexRepresentation(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X ", b));
}
return sb.toString();
}
因此你可以这样做:
SecretKey myKey = generateAesKey();
byte[] encodedBytes = myKey.getEncoded();
String s = bytesToHexRepresentation(encodedBytes);
System.out.printf(s);
以十六进制表示形式打印密钥。
至于你的第二个问题: