mysql - MySQL ENCODE 使用什么类型的加密?

标签 mysql decode encode crypt

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/

相关文章:

mysql - ActiveRecord::StatementInvalid: Mysql2::在 .where 方法中使用关联名称而不是外键时出错

mysql - Django ORM : using extra to order models by max(datetime field, max(相关项目的日期时间字段))

python - 如何将带有变音符号的字符串转换回 JSON

sql - oracle:解码和子查询选择结果

c# - ASP MVC Url 编码双转义序列

mysql - 尝试升级到 1.22 时 MediaWiki 数据库连接错误

delphi - 如何正确解码 Google Translate API 答案?

Python编码列表 'list'对象没有属性 'encode'

PHP json_encode array(3) 返回 false

java - 在 JOOQ 中插入 MySQL 的返回查询