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

前端之家收集整理的这篇文章主要介绍了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相关文章