Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我用AES密钥加密了AES密钥,并将密钥作为字符串存储在数据库中,当我尝试解密我得到的密钥时:_Java_Database_Encryption_Cryptography - Fatal编程技术网

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

Java 我用AES密钥加密了AES密钥,并将密钥作为字符串存储在数据库中,当我尝试解密我得到的密钥时:,java,database,encryption,cryptography,Java,Database,Encryption,Cryptography,请检查代码的重要部分: javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher 嘿,伙计们,我很高兴今天我尝试了几种逻辑,最后我找到了答案,我相信我是第一个得到答案的人。嘻嘻万岁。我的努力得到了回报,我从上午10点到下午6点都在做 这就是过程 生成的密钥——Base64Enocder——用类似的secretkey加密——

请检查代码的重要部分:

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

嘿,伙计们,我很高兴今天我尝试了几种逻辑,最后我找到了答案,我相信我是第一个得到答案的人。嘻嘻万岁。我的努力得到了回报,我从上午10点到下午6点都在做

这就是过程

生成的密钥——Base64Enocder——用类似的secretkey加密——Base64Encoded——转换为存储在数据库中的字符串——检索到的字符串——Base64Decoder——解密——Base64Decoder SecretKeySpec walla her是密钥

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

让我再补充一点:我发现字符串的输入长度是48,当从数据库检索回来时,它是58。请不要还原编辑,以提高问题的可读性和格式。很抱歉,这不是有意的。有没有办法他的问题忘记了将键列更改为unicode,而不是UTF8最终结果的证明iv[]输出-[B@a6d290加密密钥之前:javax.crypto.spec。SecretKeySpec@17b62加密字节的加密密码+????????加密字节的加密密码长度8 iv字节数据来自数据库--[B@1a35b19解码和解密密钥++javax.crypto.spec。SecretKeySpec@17b62加密字节的加密密码+????????加密字节长度的加密密码8
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");