一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于 SHA1 是产生一个 20 字节的二进制数组)。
消息摘要有两个基本属性:
两个不同的报文难以生成相同的摘要
难以对指定的摘要生成一个报文,而由该报文反推算出该指定的摘要
代表:美国国家标准技术研究所的 SHA1 和麻省理工学院 Ronald Rivest 提出的 MD5
package test; import java.security.MessageDigest; public class SHA_MD5 { public static void main(String[] args) { SHA_MD5 my = new SHA_MD5(); my.testDigest(); } @SuppressWarnings("static-access") public void testDigest() { try { String myinfo = "我的测试信息"; // MessageDigest alga = MessageDigest.getInstance("MD5"); MessageDigest alga = MessageDigest.getInstance("SHA-1"); // 生成一个 MessageDigest 类 , 确定计算方法 alga.update(myinfo.getBytes()); // 添加要进行计算摘要的信息 byte[] digesta = alga.digest(); // 计算出摘要,(对于MD5是16位,SHA是20位) System.out.println("本信息摘要是 :" + byte2hex(digesta)); // 其他人用相同的方法初始化,添加信息,最后进行比较摘要是否相同 MessageDigest algb = MessageDigest.getInstance("SHA-1"); algb.update(myinfo.getBytes()); if (algb.isEqual(digesta, algb.digest())) { System.out.println("信息检查正常"); } else { System.out.println("摘要不相同"); } } catch (java.security.NoSuchAlgorithmException ex) { System.out.println("非法摘要算法"); } } public String byte2hex(byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n < b.length; n++) { stmp = (Integer.toHexString(b[n] & 0XFF)); if (stmp.length() == 1) hs = hs + "0" + stmp; else hs = hs + stmp; if (n < b.length - 1) hs = hs + ":"; } return hs.toUpperCase(); } }
请您到ITEYE网站看 java小强 原创,谢谢!
http://cuisuqiang.iteye.com/ !
自建博客地址:http://www.javacui.com/ ,内容与ITEYE同步!
相关推荐
JAVA上加密算法的实现用例.doc
JAVA上加密算法的实现用例 JAVA上加密算法的实现用例
JAVA上加密算法的实现用例.rar
加密算法,java上的加密算法,对大家应该用帮助的一个加密算法。
java加密程序
DES加密算法实现的C++类DES加密算法实现的C++类
JAVA上加密算法的实现用例 1.1. 单钥密码体制 单钥密码体制是一种传统的加密算法,是指信息的发送方和接收方共同使用同一把密钥进行加解密。
java通用测试用例java通用测试用例java通用测试用例java通用测试用例
java实现的八大排序算法 用例 有备注解释 纯个人实现
MD5加密算法,包括测试用例!欢迎下载,进行使用!此加密方法为不可逆算法,一般用来帐户密码加密等!
用遗传算法的测试用例最小化,以最少的测试用例覆盖原有测试需求
java 语音源代码用例小案例可以学习探讨 。