Java aes键到32字节字符串表示
如何做到这一点?我想获取生成的aes secretkey并将其转换为16字节的纯文本表示Java aes键到32字节字符串表示,java,encoding,aes,symmetric-key,Java,Encoding,Aes,Symmetric Key,如何做到这一点?我想获取生成的aes secretkey并将其转换为16字节的纯文本表示 public SecretKey generateAesKey() throws NoSuchAlgorithmException{ KeyGenerator keygen; keygen = KeyGenerator.getInstance("AES"); keygen.init(128);
public SecretKey generateAesKey() throws NoSuchAlgorithmException{
KeyGenerator keygen;
keygen = KeyGenerator.getInstance("AES");
keygen.init(128);
SecretKey aesKey = keygen.generateKey();
return aesKey;
}
我用这个来生成密钥
(除非我考虑的是256bit密钥,否则密钥肯定是32字节?
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);
以漂亮的十六进制表示形式打印密钥
关于你的第二个问题:
- 对于128位,密钥为16字节(您当前的情况)
- 对于192位,密钥是24字节
- 对于256位,密钥为32字节