打印密钥
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey secretKey = keyGenerator.generateKey();
cipher = Cipher.getInstance("AES");
String plainText = "AES Symmetric Encryption Decryption";
System.out.println("Plain Text Before Encryption: " + plainText);
String encryptedText = encrypt(plainText, secretKey);
System.out.println("Encrypted Text After Encryption: " + encryptedText);
String decryptedText = decrypt(encryptedText, secretKey);
System.out.println("Decrypted Text After Decryption: " + decryptedText);
System.out.println("srecretkey"+secretKey);
我得到的结果是:
Plain Text Before Encryption: AES Symmetric Encryption Decryption
Encrypted Text After Encryption: l4YZj1SjqS/vr1mK9K4LC7lBFfQ4wkJg2zIlb81ghpkM5qnvCyyfMeYop2ppHDoX
Decrypted Text After Decryption: AES Symmetric Encryption Decryption
srecretkeyjavax.crypto.spec.SecretKeySpec@15300
这里的密钥大小不是128位。
1条答案
按热度按时间wlzqhblo1#
你的问题和代码有两个问题。
首先:您询问的是一个128位aes密钥,但keygenerator的参数是“256”,这意味着您生成了一个256位(=32字节)长的aes密钥:
第二:aes密钥是字节数组中的随机数据,不适合打印为字符串。当您需要密钥的打印输出时,有几种方法可以将密钥编码为(base64)编码字符串:
这是示例程序的输出:
下面是完整的代码,请使用我的联机编译器运行该示例:https://repl.it/@javacrypto/sogenerateaeskey#主.java
编辑:
要从base64编码字符串中获取密钥,请使用以下代码行:
并将其用作cipher.init的输入: