我有一个应用程序,它使用Java javax.crypto包来加密字符串并将它们存储在postgresql数据库中。我们需要从postgres SQL解密这些字符串。我知道postgresSQL包pgcrypto,但我不知道我应该使用哪个pgcrypto函数来解密字符串。 java代码使用Crypto“PBEWithMD5AndDES”算法,我在pgcrypto包中找不到相应的算法。
例如,如果私钥是'a_private_key',则应用程序代码使用以下函数生成密钥并加密字符串。
SecretKey secretKey = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(new PBEKeySpec("a_private_key".toCharArray()));
Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES")
cipher.init(Cipher.ENCRYPT_MODE, secretKey,
new PBEParameterSpec(
new byte[] { (byte) 0x30, (byte) 0x31, (byte) 0x32, (byte) 0x33,
(byte) 0x34, (byte) 0x35, (byte) 0x36, (byte) 0x37, },
15);
byte[] crypted = cipher.doFinal("StringToEncrypt".getBytes(UTF8));
答案 0 :(得分:0)
现在关闭这个问题,因为ntoskml和Eilke的评论是正确的; PBE是一个只有java的加密技术,因此我无法从Postgresql解密它。 所以最后我不得不针对这个问题提出Java / JDBC解决方案。