摘要算法

摘要算法又称哈希算法、散列算法。

原理及作用:

它可以把任意长度的数据转换为一个长度固定且唯一(不同数据的加密结果重复概率极低,有兴趣请阅读https://blog.csdn.net/skyMountain/article/details/532819)的数据串(通常用16进制的字符串表示),从而到达验证数据是否被人篡改的作用。(简单来说就是验证数据的完整性)

分类:

消息摘要算法分为三类:

MD(Message Digest):消息摘要

SHA(Secure Hash Algorithm):安全散列

MAC(Message Authentication Code):消息认证码

MD算法

 

算法    摘要长度   实现方
MD2       128 JDK
MD4      128  Bouncy Castle
MD5   128    JDK

 

 

 

 

 

SHA算法:

算法摘要长度实现方
SHA-1160JDK
SHA-224224Bouncy Castle
SHA-256256JDK
SHA-384384JDK
SHA-512512JDK

 

 

 

 

 

 

 

使用场景:

1.常用对注册用户的密码进行加密存储,提高了用户信息的安全性,如在Unix系统中用户的密码是以MD5(或其它类似的算法)经Hash运算后存储在文件系统中

2.web api调用认证中,客户端和服务端通过相同的公钥对提交参数进行MD5加密,进行验证

3.不同用户之间进行数据交互可以通过摘要算法进行加密,已确保传输的数据没有被他人篡改

用法示例:

Python中的hashlib模块封装一些常用摘要算法,如md5、sha1等

md5的使用

import hashlib

md5 = hashlib.md5()
md5.update('md5test: i am Chinese'.encode('utf-8'))
print(md5.hexdigest())

如果需要验证的数据量较大可以分多次计算,结果一样

import hashlib

md5 = hashlib.md5()
md5.update('md5test: '.encode('utf-8'))
md5.update('i am Chinese'.encode('utf-8'))
print(md5.hexdigest())

sha1的使用同上

import hashlib

sha1 = hashlib.sha1()
sha1.update('sha1test: i am chinese'.encode('utf-8'))
print(sha1.hexdigest())
import hashlib

sha1 = hashlib.sha1()
sha1.update('sha1test: '.encode('utf-8'))
sha1.update('i am chinese'.encode('utf-8'))
print(sha1.hexdigest())

注意

最后需要知道摘要算法不是对数据进行加密,也不是对数据进行编码。加密和编码都是可逆的,而摘要算法对数据的处理几乎是不可逆的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值