我正在尝试使用MYSQL方法使用值为'symmetric_encryption.php'的密钥加密字符串(仅作为示例)。但输出是垃圾,没有其他密码可以理解。我尝试了所有的东西,但它产生了同样的垃圾,无论如何。它可以解密这个垃圾但是如果没有其他工具可以做同样的事情那么重要吗?
select HEX(DES_ENCRYPT('test12345','symmetric_encryption.php'));
输出为FFDAF66D7309B91B9DC5CBC25F7514AFC4应该是e52099eb5e0f81e8bd24315f3a80ac7c
(请查看此处https://www.tools4noobs.com/online_tools/encrypt/)
select TO_BASE64(DES_ENCRYPT('test12345','symmetric_encryption.php'));
输出/ 9r2bXMJuRudxcvCX3UUr8Q =何时应为5SCZ614Pgei9JDFfOoCsfA ==
有很多在线工具可以验证TripleDES加密的结果。
MYSQL输出不符合要求。 MYSQL产生的结果无法通过任何其他密码工具解密,而是由mysql本身解密。
我设置了块大小
SET block_encryption_mode = 'aes-128-ecb';
什么不应该是必要的,因为它是默认的,我的编码都是UTF8
它是死路还是有解决方案?
答案 0 :(得分:2)
这是MySQL在使用DES_ENCRYPT
加密某些内容时所做的事情:
EVP_BytesToKey
进行一次迭代并使用MD5 EVP_BytesToKey
和密钥一起生成的初始化向量被清零,因此它基本上是一个0x0000000000000000 IV DES_ENCRYPT
时才会感兴趣;它可以安全地被忽视。如果您想亲眼看看,代码位于root / sql / item_strfunc.cc中。 Here是该文件的有趣部分。毋庸置疑,这不是加密内容的好方法。