我正在尝试使用MYSQL方法来加密字符串,该方法使用带有值'symmetric_encryption.php‘的密钥(仅举个例子)。然而,输出是垃圾,没有其他密码可以理解。我尝试了所有的方法,但它产生了同样的垃圾,无论是什么。它可以解密这些垃圾,但如果没有其他工具可以做同样的事情,那又有什么意义呢?
select HEX(DES_ENCRYPT('test12345','symmetric_encryption.php'));应为e52099eb5e0f81e8bd24315f3a80ac7c时,输出为FFDAF66D7309B91B9DC5CBC25F7514AFC4
(请查看此处,例如https://www.tools4noobs.com/online_tools/encrypt/)
select TO_BASE64(DES_ENCRYPT('test12345','symmetric_encryption.php'));应为5SCZ614Pgei9JDFfOoCsfA==时输出/9r2bXMJuRudxcvCX3UUr8Q=
有很多在线工具可以验证TripleDES加密的结果。
MYSQL输出行外。MYSQL产生的结果不能被任何其他密码工具解密,只能由mysql本身解密。
我设置了块大小
SET block_encryption_mode = 'aes-128-ecb';什么不应该是必需的,因为它是默认的,并且我的编码都是UTF8
这是一个死胡同,还是有一个解决方案?
发布于 2016-04-26 03:09:07
下面是MySQL在使用DES_ENCRYPT加密内容时所做的工作
具有EDE和192位密钥的
EVP_BytesToKey和MD5EVP_BytesToKey连同密钥一起产生的初始化向量被置零,因此其本质上是0x0000000000000IVH110使用了某种PKCS#5兼容的填充(最后一个字节表示填充字节的数量):该代码实际上不初始化其它填充字节,因此,这基本上将导致密文的第一个字节实际上没有加密,而是表示密钥文件中使用的密钥,但只有在没有密码传递给DES_ENCRYPT的情况下,这才有意义;它可以安全地disregarded.
如果您想亲自查看,代码位于root/sql/item_strfunc.cc中。Here是该文件中有趣的部分。不用说,这不是一个很好的加密方式。
https://stackoverflow.com/questions/36846936
复制相似问题