java 加密之消息摘要算法
简介
消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,即单向加密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。
消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络上使用。由于其加密计算的工作量相当巨大,所以以前的这种算法通常只用于数据量有限的情况下的加密,例如计算机的口令就是用不可逆加密算法加密的
用途
一般地,把对一个信息的摘要称为该消息的指纹或数字签名,数字签名是保证信息的完整性和不可否认性的方法。消息摘要算法适合作为数字签名算法,也是数字签名的核心算法。
分类
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();
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
输出:
364620d83dfd1e22936d6e9792068b67
- 1
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();
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
输出:
f23bf780967813dd28e3af23a8960821db415791
- 1
SHA 的应用场景
最容易看得到的是,打开计算机浏览器的管理证书,例如我的360极速浏览器的证书,点开一个证书,可以看到指纹算法 sha1 和指纹:
经典的使用时序图如下:
消息鉴别是指:在接收方将原始消息使用公布的摘要算法进行摘要,然后把摘要结果和接收的摘要消息进行比对,从而进行处理。
大部分发送方以“原始消息+Key+时间戳”的类似格式进行摘要处理,然后发送。
java 加密之消息摘要算法的更多相关文章
- java学习-MD5消息摘要算法
md5 属于hash算法一类,是不可逆的消息摘要算法.与对称加密和非对称加密算法不一样,不需要加密密钥. 注意: md5不是加密算法,只是将数据进行散列计算后生成一个唯一值的算法,没有加密密钥也没有解 ...
- JAVA加解密 -- 消息摘要算法
消息摘要算法是一种单向加密算法 主要用于验证数据完整性,也是数字签名的核心算法 消息鉴别:指在接收方将原始信息进行摘要,然后与接收到的摘要信息进行对比 a.MD家族 – MD5(128位摘要信息) M ...
- password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又称为数字摘要(Digital Digest). 它是一个唯一相应一个消息或文本的固定长度 ...
- Java加密与解密笔记(一) Base64和数据摘要算法
对加密解密下面的内容一定要先理解: 甲乙双方要通信,中间的连接可能被人窃听甚至篡改.解决办法就是把传输的内容进行加密,用密文去传输,这样即使被监听也没办法知道信息的具体内容. 加密时,甲乙双方可以约定 ...
- HMAC加密的消息摘要码
HMAC(Hash Message Authentication Code)哈希消息授权码,它在消息摘要算法(例如MD5,SHA系列算法)的基础上,使用密钥对消息摘要进行加密.它相当于一个马甲,内里可 ...
- 信息加密之消息摘要算法的MAC
MAC是消息摘要算法的第三种实现方式,另外两种方式分别为:MD2\4\5.SHA. MAC的jdk实现:1.默认密钥方式 private static void MAC_JDK(){ try { Ke ...
- Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha 加密解密,曾经是我一 ...
- MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)
MD5 编辑 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321( ...
- cooking java ——加密解密
java安全与密码概述 主要分为三部分: 密码学基础,包括:相关术语:分类:常用安全体系. java的安全组成:jdk以及第三方扩展. 相关实现代码,包括:base64.MD5········ 密码学 ...
随机推荐
- ubuntu系统无eth0网卡解决办法
ubuntu终端下命令ifconfig的问题解决 问题一. ifconfig之后只显示lo,没有看到eth0 问题二. ifconfig之后显示eth0,但是没有显示静态IP地址,即无inet.地址. ...
- 检测你的php代码执行效率
在写程序的时候,经常会为是改用empty()还是isset好,或是用单引号还是双引号来显示连接字符串而发出疑问,现在好了.我们其实可以通过程序很科学的得出精确的答案.知道我们的程序到底怎样写效率会更好 ...
- Mybatis中insert
<insert id="insert" parameterType="Currency"> INSERT INTO YZ_SECURITIES_CU ...
- hive 客户端执行select count(1) from t_sz01
yarn-site.xml配置错误 yarn.nodemanager.aux-services 中的-原先配置为_ 导致错误......
- c#图片生成png格式和原图不同
下面这种,会生成和原图类似的图片,png格式的图片该是空的地方仍旧是空的
- android框架---->下沉文字Titanic的使用
Titanic is a simple illusion obtained by applying an animated translation on the TextView TextPaint ...
- 深入浅出Docker(六):像谷歌一样部署你的应用
1.概述 谷歌发起的开源项目从来都是广受技术圈的关注和讨论,本文将介绍的就是最新的容器编排管理系统Kubernetes.Kubernetes开源项目版本更新频繁,对于初次使用者来说其定义大量的技术术语 ...
- Android ImageResizer:inSampleSize
import android.annotation.TargetApi; import android.content.Context; import android.content.res.Reso ...
- 2800 送外卖[状态压缩dp]
2800 送外卖 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 有一个送外卖的,他手上有n份订单,他 ...
- MyBatis中typealiases的使用
转自:http://blog.csdn.net/lelewenzibin/article/details/42713585 问题描述 Mybatis有个代码生成工具,生成的代码里面有mapper.xm ...