mysql中存储指纹数据_业务数据指纹(MD5)的使用和存储注意

本文探讨了在MySQL中存储业务数据指纹(如MD5)的选择和方法。建议使用concat_ws函数结合字段计算MD5,以避免冲突,并推荐使用Binary(16)类型以节省空间和提高性能。此外,指出在UTF8环境下,VARCHAR可能比CHAR更节省空间,但在索引和比较上可能较慢。
摘要由CSDN通过智能技术生成

cfee45725289

md5

开始

有时由于存储优化或实现业务要求,或数据引用、去重要求。需要对业务数据计算和存储指纹信息。

以下分析几方面。

1.指纹算法选择

2.指纹输入的数据选择

3.指纹储存方法

指纹算法选择

理论hash冲突的可能性:

md5 > sha1 > shaXX

这里没什么心得。不过md5已经有彩虹表之类的冲突列表了。无意的冲突很难,但如果是有意的冲突和搞事,MD5就比较不安全。

业务数据指纹的指纹输入选择

选择MD5的输入公式,建议使用可以直接在sql中计算的公式,方便后台维护时在线查对和做数。可以考虑:

注意多字段合并计算md5时,需要加入分隔符(想想不加为什么不可以?),和考虑是否需要对分隔符冲突作转义(escape)处理。

使用时,需要注意DB和表的charset

select

concat_ws('~',

replace(field1,'~','~~'),

replace(field2,'~','~~')

);

Mysql中用好Binary类型做性能优化:

需要在mysql表中保存MD5值。考虑三个方案:

varchar(32)

char(32)

binary(16)

由于MD5值,实际为1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值