mysql 凭证_阻止密码,盐,AES,MySQL和凭证存储的最佳实践

通常对于标准AES,您需要提供随机数(IV),以避免您描述的问题.

一种大幅提高加密数据质量的方法是为每个帐户使用不同的主密码,而不是改变IV.基本上这是一些与密码混合的数据.你可以做很多这样的事情,最简单的就是做一个concat.

例如.

>创建随机序列.

>存储随机数|| HEX(AES_ENCRYPT(password_to_store,master_password || nonce)

>通过提取随机数进行检索,然后使用master_password ||解密数据现时.

这是一个例子,具有唯一的随机数’iej383u8fjeiw'(每次加密时都需要生成一个新的)

SELECT CONCAT('iej383u8fjeiw', ':', HEX(AES_ENCRYPT("password", CONCAT("master_password", "iej383u8fjeiw"))))

-> "iej383u8fjeiw:61224653D4DA33D57A42FE5E5E10DEA9"

SELECT AES_DECRYPT(UNHEX(SUBSTRING_INDEX('iej383u8fjeiw:61224653D4DA33D57A42FE5E5E10DEA9', ':', -1)), CONCAT('master_password', SUBSTRING_INDEX('iej383u8fjeiw:61224653D4DA33D57A42FE5E5E10DEA9', ':', 1)))

-> "password"

或者使用变量:

SELECT CONCAT(nonce, ':', HEX(AES_ENCRYPT(password_to_encrypt, CONCAT(master_password, nonce))))

-> encrypted password

SELECT AES_DECRYPT(UNHEX(SUBSTRING_INDEX(encrypted_password, ':', -1)), CONCAT(master_password, SUBSTRING_INDEX(encrypted_password, ':', 1)))

-> password_to_encrypt

也就是说,虽然比没有nonce的版本安全得多,但还有很多弱点和攻击向量.例如,记录查询或嗅探mysql数据包将显示密码和主密码!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值