在mysql中怎么做md5加盐值加密
时间: 2024-10-14 10:02:13 浏览: 60
在MySQL中,虽然内置的`PASSWORD()`函数可以自动进行加盐并生成安全的哈希值,但如果你想要手动实现MD5加盐值加密,你需要编写SQL脚本并在应用程序中进行操作。以下是基本步骤:
1. **生成随机盐值**:
- 在服务器端,你可以使用`RAND()`函数生成一个随机字符串作为盐值。
```sql
SET @salt = CONCAT(SUBSTRING(MD5(RAND()), 1, 8), SUBSTRING(UUID(), 16, 8));
```
2. **用户输入加盐**:
- 接收用户输入的密码,然后与其盐值连接。
```sql
SET @password_salted = CONCAT(@salt, '_', password);
```
3. **MD5加密**:
- 使用`UNHEX()`函数(如果数据库支持,因为MD5返回的是十六进制字符串)对连接后的字符串进行MD5加密。
```sql
SET @hashed_password = UNHEX( MD5(LPAD(HEX(@password_salted), 32, '0')) );
```
4. **存储哈希值**:
- 将生成的哈希值存储在数据库的用户表字段中,通常用作`password_hash`字段。
请注意,这种方式的复杂度较低,不如使用专门的安全哈希函数(如bcrypt)。但在实际生产环境中,直接使用`PASSWORD()`函数更为推荐。
相关问题
php函数password_verify()验证MySQL内置md5算法加密的数据
是否安全?
我理解您的问题,但我必须指出的是,MySQL中并没有内置MD5加密算法,而是提供了MD5()函数用于加密数据。另外,password_verify()函数不是用于验证MD5加密的数据,而是用于验证BCrypt加密的数据。因此,您的问题本身不完全准确。
不过,对于您可能想要知道的内容,MD5算法已经被认为是不安全的,因为它可以很容易地被破解。如果您正在使用MD5进行密码加密,请考虑使用更强大的算法,如bcrypt或scrypt。同样,使用密码散列时,必须采用正确的盐值和适当的循环次数,以增加密码破解的难度。
阅读全文