MySQL
ENCODE('pass','salt')
使用什么类型的加密技术? 与 DES 非常相似
已知密码是否可以暴力破解?
最佳答案
ENCODE() 和 DECODE() 使用的算法的源代码可在此处找到:
https://github.com/mysql/mysql-server/blob/5.7/sql/sql_crypt.cc
该文件中的评论说该算法“应该适用于短字符串”,但这并不能让我相信它是专业强度的加密算法。
请注意,这两个函数在 MySQL 5.7 中已被弃用。您应该使用 AES_ENCRYPT()
和 AES_DECRYPT()
来代替。
但是,还建议完全避免在 SQL 中使用加密函数,因为如果这样做,明文字符串将被添加到您的查询日志或二进制日志中:
INSERT INTO SuperSecureTable
SET secret = AES_ENCRYPT('no one should see this', 'secret');
回复 @ikegami 的评论:
我认为您将加密与散列混淆了。
更正:我同意你的观点。根据加密要求的安全程度,AES_ENCRYPT() 也不合适。最好在应用程序中使用最先进的加密技术,并将生成的加密数据插入数据库。
这也可以解决我上面提到的明文记录在日志中的问题。
关于mysql - MySQL ENCODE 使用什么类型的加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49600766/