php – 如何在sql中生成随机字符串到salt passowrd?

sql中有关于密码的问题:

下面的代码通过随机生成10个字符的字符串来限制特定密码:

Update Teacher 
SET    TeacherSalt = SUBSTRING(MD5(RAND()),-10),TeacherPassword = SHA1(CONCAT('009b9b624aaecc4b3217dcd4bfee15ab704745d7',SUBSTRING(MD5(RAND()),-10)))
WHERE TeacherPassword = '009b9b624aaecc4b3217dcd4bfee15ab704745d7'

但我的问题是我想要更改盐,以便它生成的字符串来自所有这些字符:

./ABCDEFGHIJKLMnopQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

有63个字符. PHP的方式如下:

$salt = ""; 
for ($i = 0; $i < 40; $i++) { 
   $salt .= substr(
     "./ABCDEFGHIJKLMnopQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",mt_rand(0,63),1); 
}

但是我怎么能用上面的sql方式写这个呢?

最佳答案
如果你真的想要随意加盐,那么只能通过用PHP生成随机盐并用该盐加密密码并将盐密钥和密码存储在表的两个字段中来实现.表必须具有salt字段和密码字段.但是,如果您只是想使用MysqL进行加密而不是在这里查看http://dev.mysql.com/doc/refman/5.5/en//encryption-functions.html

当我们验证用户登录凭据时,我们遵循相同的过程,只是这次我们使用数据库中的salt而不是生成新的随机数据.我们向其添加用户提供的密码,运行我们的散列算法,然后将结果与存储在该用户配置文件中的散列进行比较.

以下链接可能会为您提供更多想法.

How do you securely store a user’s password and salt in MySQL?

Where do you store your salt strings?

How insecure is a salted SHA1 compared to a salted SHA512

Salt Generation and open source software

我希望你现在有了这个主意.

相关文章

目录MySQL卸载环境查看是否已安装MySQL卸载mysql服务查看是否...
目录数据类型数据类型分类数值类型以TINYINT认识整型族有符号...
目录表的约束空属性非空约束(NOT NULL Constraint)默认值定...
目录函数时间日期函数:字符串函数数学函数其他函数 函数 时间...
目录使用C语言连接库的安装C APImysql_initmysql_real_conne...
目录用户用户管理查询所有用户查看当前用户查看当前连接数创...