繁体   English   中英

我用AES密钥加密了AES密钥,当我尝试解密密钥时,将密钥作为字符串存储在数据库中:

[英]I have encrypted AES Key with AES Key,Stored the Key as String in DataBase, when i try to decrypt the Key i get :

javax.crypto.IllegalBlockSizeException: 
    Input length must be multiple of 16 when decrypting with padded cipher

请检查代码的重要部分:

Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

KeyGenerator keyGen = KeyGenerator.getInstance("AES");
SecretKey secKey = (SecretKey) keyGen.generateKey();
SecretKey secKey1 = (SecretKey) keyGen1.generateKey();

byte[] stringKey=secKey.getEncoded();

cipher.init(Cipher.ENCRYPT_MODE, secKey1);
byte[] DykeyBytes = cipher.doFinal(stringKey);

StringBuffer sbselect2=new StringBuffer();
sbselect2.append("SELECT keylock FROM ");
sbselect2.append(UserConstants.USER_DETAILS_TABLE_NAME1);
sbselect2.append(" where Username='" + un + "'");
ps2=conn.prepareStatement(sbselect2.toString());
ResultSet rs1 =ps2.executeQuery();
rs1.next();
String Enkey = rs1.getString("keylock");

System.out.println("Encrypted+Encoded key from current user "+Enkey);
rs1.close();

//decrypting the DB stored Key
Cipher cipher2 = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher2.init(Cipher.DECRYPT_MODE, singlekey );
byte[] dynamicKey = Enkey.getBytes("UTF8");
// below is where the error points  to at user.dao.UserDao.isRegisteredUser(UserDao.java:313)
byte[] decryptedBytes = cipher2.doFinal(dynamicKey);

Object DeKey = new String(decryptedBytes);//under check
SecretKeySpec key = new SecretKeySpec(decryptedBytes, "AES");

大家好,我今天很高兴,尝试了几种逻辑,最后我找到了答案,而且我相信我是第一个得到答案的人。 嘻哈欢呼。 我的辛勤工作得到了回报,从10 AM到6 PM开始工作。

这是过程

生成的密钥--- Base64Enocder ---用类似的密钥加密-Base64Encoded-转换为String-存储在数据库中---已检索的String --- Base64Decoder ---解密-Base64Decoder-SecretKeySpec是关键

输出:加密之前密钥:javax.crypto.spec.SecretKeySpec@178e7。 base64:UKcvVLp9L51xxHHyLIRrgQ ==。 base64double:wu8CBPMELHgp6WAGGFgHGWjPXn4MRibeZ9IKGRTpjJE =。 加密base64后:wu8CBPMELHgp6WAGGFgHGWjPXn4MRibeZ9IKGRTpjJE =。 解密后base64double:[B @ 1cfe433。 解密后base64:[B @ 18f11d3。 在base64decoder和keyspec之后:javax.crypto.spec.SecretKeySpec@178e7。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM