在使用CryptoJS加密的mysql中解密AES

时间:2019-09-20 09:37:24

标签: mysql aes cryptojs

在我的数据库中,我有一列以这种形式存储cryptojs加密值:

U2FsdGVkX1 / BpEUjr5y + hivlNpUep + HZQG4Tw8bmTvQ =

当我用cryptojs解密时,一切都很好。

let decryptedValue = cryptoJS.AES.decrypt(
    encryptedField,
    secretKey
 );

但是用mysql解密会返回null。

我尝试将加密的字符串转换为二进制,然后使用mysql的aes_decrypt()对其解密,但是它返回null。

SELECT convert(AES_DECRYPT(binary(encrypted_field),'secret_key') using utf8) as decrypt

加密值是数字,我需要解密它们以便在mysql中使用它们进行一些计算。

我不知道我的解密方式是否有问题,或者cryptojs和mysql使用AES进行加密和解密的方式不同。

谢谢。

2 个答案:

答案 0 :(得分:0)

看起来您的初始字符串是 Base64编码cryptoJS.AES或其他进程可能正在获取加密的字节并将其存储为 Base64 在数据库中。

您的数据库解密例程可能假定原始字节,因此您需要将 Base64 字符串(检查mysql的base64例程的网络)转换为实际字节,然后将其传递给AES_DECRYPT功能。

答案 1 :(得分:0)

不确定您的问题是否仍然存在,但是建议您使用CryptoJS的替代方法。我发现MySQL AES加密和解密的Node JS实现。这个库也帮助我加密了MySQL可读的数据。

这里是链接:

https://www.npmjs.com/package/mysql-aes