写点什么

数据散列算法

作者:技术小生
  • 2022 年 7 月 20 日
  • 本文字数:752 字

    阅读完需:约 2 分钟

数据散列算法

写在前面

今天,领导安排了个任务:需要将美国的账号和东南亚的账号合并到一张表里,这样就可以把美国和东南亚的两个客户端合并成一个。背景是这样的,因为各个国家对于敏感数据出境的监管非常严格,如果直接通过数据同步的方式,政府不会同意。所以,目前的方案是将账号数据进行散列处理之后,把这些散列值作为账号存储。用户进行认证时,也同样进行散列后,进行比对。这样就可以合规。

问题

处理这个问题最好的就是选择散列算法。但算法需要具备:

  • 单向性 只能通过账号单向散列成对应值,而值无法反解析出账号。这样,就保证了数据不出境,不会收到政府的“喝茶”邀请啦

  • 安全性 散列的算法不容易破解

  • 速度快 因为在业务处理中还有其他的功能,这个算法就不能太慢

  • 碰撞概率低 用户不同的账号散列后的值也不一样

算法研究

基于以上考虑,对目前流行的几种散列算法(MD5、SHA-1、SHA-256)进行了比较。

MD5(信息摘要算法),一种被广泛使用的密码散列函数,可以产生出一个 128 位(16 字节)的散列值(hash value),用于确保信息传输完整一致。

SHA-1(安全散列算法 1),可以生成一个被称为消息摘要的 160 位(20 字节)散列值。

SHA-256,是 SHA-2(安全散列算法 2)的一种,因为生成 256 位散列值而得名。

这几种算法都是单向散列算法,具有不可逆性。都可以实现对任意长度的字符串进行散列,生成固定长度的字符串。虽然都无法百分百确保防碰撞,但安全性方面由于散列值越长,碰撞发生的概率越低。所以在防碰撞等级上,SHA-256 > SHA-1 > MD5 。但是速度上,SHA-256 就要相对于其他算法逊色不少。在当前场景,通过数据加盐的方式,这几种算法完全可以实现一定的安全性。

总结

存在即合理。这几种算法在各方面比较虽各有不同,但具体使用的时候,还要看应用场景。只有适合的才是最好的!

发布于: 刚刚阅读数: 3
用户头像

技术小生

关注

业务应用架构专家 2019.10.08 加入

主要负责公司内部系统的应用架构设计与落地。擅长Java语言开发,熟悉Python、Shell等。精通K8S等云原生相关技术。

评论

发布
暂无评论
数据散列算法_7月月更_技术小生_InfoQ写作社区