首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL TripleDES算法生成专有的垃圾(没有密码能够理解它)

问MYSQL TripleDES算法生成专有的垃圾(没有密码能够理解它)
EN

Stack Overflow用户
提问于 2016-04-26 01:12:04
回答 1查看 568关注 0票数 2

我正在尝试使用MYSQL方法来加密字符串,该方法使用带有值'symmetric_encryption.php‘的密钥(仅举个例子)。然而,输出是垃圾,没有其他密码可以理解。我尝试了所有的方法,但它产生了同样的垃圾,无论是什么。它可以解密这些垃圾,但如果没有其他工具可以做同样的事情,那又有什么意义呢?

代码语言:javascript
复制
select HEX(DES_ENCRYPT('test12345','symmetric_encryption.php'));

应为e52099eb5e0f81e8bd24315f3a80ac7c时,输出为FFDAF66D7309B91B9DC5CBC25F7514AFC4

(请查看此处,例如https://www.tools4noobs.com/online_tools/encrypt/)

代码语言:javascript
复制
select TO_BASE64(DES_ENCRYPT('test12345','symmetric_encryption.php'));

应为5SCZ614Pgei9JDFfOoCsfA==时输出/9r2bXMJuRudxcvCX3UUr8Q=

有很多在线工具可以验证TripleDES加密的结果。

MYSQL输出行外。MYSQL产生的结果不能被任何其他密码工具解密,只能由mysql本身解密。

我设置了块大小

代码语言:javascript
复制
SET block_encryption_mode = 'aes-128-ecb';

什么不应该是必需的,因为它是默认的,并且我的编码都是UTF8

这是一个死胡同,还是有一个解决方案?

EN

回答 1

Stack Overflow用户

发布于 2016-04-26 03:09:07

下面是MySQL在使用DES_ENCRYPT加密内容时所做的工作

具有EDE和192位密钥的

  • 三重DES和192位密钥(168位没有奇偶校验位)
  • 192位密钥是使用具有一次迭代的OpenSSL的EVP_BytesToKey和MD5
  • CBC模式从给定密码短语生成的,但是由EVP_BytesToKey连同密钥一起产生的初始化向量被置零,因此其本质上是0x0000000000000IV

H110使用了某种PKCS#5兼容的填充(最后一个字节表示填充字节的数量):该代码实际上不初始化其它填充字节,因此,这基本上将导致密文的第一个字节实际上没有加密,而是表示密钥文件中使用的密钥,但只有在没有密码传递给DES_ENCRYPT的情况下,这才有意义;它可以安全地disregarded.

如果您想亲自查看,代码位于root/sql/item_strfunc.cc中。Here是该文件中有趣的部分。不用说,这不是一个很好的加密方式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36846936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档