java 加密之消息摘要算法
来源:互联网 发布:linux 安装java编译 编辑:程序博客网 时间:2024/06/06 07:50
简介
消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,即单向加密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。
消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络上使用。由于其加密计算的工作量相当巨大,所以以前的这种算法通常只用于数据量有限的情况下的加密,例如计算机的口令就是用不可逆加密算法加密的
用途
一般地,把对一个信息的摘要称为该消息的指纹或数字签名,数字签名是保证信息的完整性和不可否认性的方法。消息摘要算法适合作为数字签名算法,也是数字签名的核心算法。
分类
MD(Message Digest,消息摘要)
SHA(Secure Hash Algorithm,安全散列算法)
MAC(Message Authentication Code,消息认证码)
……
MD
MD算法包括MD2、MD4和MD5,摘要长度都是128位,都是单向加密,其中JDK自带MD2和MD5。
MD5的 java 实现
public class MyMD5 { public static void main(String[] args) { String str = "i am guo feng"; try { //获取MD5算法实例 MessageDigest md = MessageDigest.getInstance("MD5"); //传入需要计算的字符串更新摘要信息 md.update(str.getBytes()); //获得摘要 //BigInteger函数则将8位的字符串转换成16位hex值, //用字符串形式表示hash值。 String result = new BigInteger(1, md.digest()).toString(16); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } }}
输出:
364620d83dfd1e22936d6e9792068b67
MD5 的应用场景
经典的使用时序图如下:
系统用户注册:
系统用户登录:
当数据库受到攻击时,泄漏的密码是MD5加密的,对用户和公司也没有什么损失。
SHA
安全散列算法包括SHA-1,SHA-2,其中SHA-2是SHA-224、SHA-256、SHA-384、SHA-512的统称。
安全散列算法同MD一样,也是固定长度摘要。SHA-1的摘要长度是160,SHA-2的摘要长度是每个名称的后面标识数字。
SHA-1的java实现:
public class MySHA { public static void main(String[] args) { String str = "i am guo feng"; try { //获取算法实例 MessageDigest md = MessageDigest.getInstance("SHA"); //传入需要计算的字符串更新摘要信息 md.update(str.getBytes()); //获得摘要 //BigInteger函数则将8位的字符串转换成16位hex值,用字符串形式表示hash值。 String result = new BigInteger(1, md.digest()).toString(16); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } }}
输出:
f23bf780967813dd28e3af23a8960821db415791
SHA 的应用场景
最容易看得到的是,打开计算机浏览器的管理证书,例如我的360极速浏览器的证书,点开一个证书,可以看到指纹算法 sha1 和指纹:
经典的使用时序图如下:
消息鉴别是指:在接收方将原始消息使用公布的摘要算法进行摘要,然后把摘要结果和接收的摘要消息进行比对,从而进行处理。
大部分发送方以“原始消息+Key+时间戳”的类似格式进行摘要处理,然后发送。
- java 加密之消息摘要算法
- Java加密系列之(三)消息摘要算法加密
- java消息摘要算法加密
- java消息摘要算法加密
- java消息摘要算法加密
- Java消息摘要算法加密
- JAVA加密解密之消息摘要算法(MessageDigest)
- Java加密-Base64、消息摘要算法
- 消息摘要算法加密
- Java加密解密之消息摘要
- Java 加密解密之消息摘要算法(MD5 SHA MAC)
- Java 加密解密之消息摘要算法(MD5 SHA MAC)
- 密码学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
- 密码学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
- Java 加密解密之消息摘要算法(MD5 SHA MAC)
- Java 加密解密之消息摘要算法(MD5 SHA MAC)
- Java 加密解密之消息摘要算法(MD5 SHA MAC)
- 第四十六篇: JAVA加密解密之消息摘要算法(MessageDigest)
- 在本地用命令行创建一个git仓库,并推送到远程
- 教你如何搭建一个超完美的服务端渲染开发环境
- 生成式对抗网络GAN汇总
- 层次聚类算法(一)
- Struts2框架
- java 加密之消息摘要算法
- 16.死锁
- 加薪的7个技巧
- 17.StringBuffer和StringBuilder
- Android系统/目录详解
- Intermediate Algorithm Scripting (50 hours)中级算法脚本练习
- 详细理解 为什么说Volley适合数据量小,通信频繁的网络操作
- PAT甲级C语言.1007. 素数对猜想
- LeetCode304