java安全-----摘要

来源:互联网 发布:迪杰斯特拉算法流程图 编辑:程序博客网 时间:2024/05/22 13:05

我们在下载文件的时候经常会看到有的下载站点也提供下载文件的“数字摘要“,供下载者验证下载后的文件是否完整,或者说是否和服务器上的文件”一模一样“。其实,数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,儿同样的明文其摘要必定一致。 因此,“数字摘要“叫”数字指纹“可能会更贴切一些。“数字摘要“是https能确保数据完整性和防篡改的根本原因。

 (本段摘自袭烽的博客)

下面  我们来看看如何通过java来生成摘要

使用java生成摘要 我们需要是用到Java的MessageDigest类  这个类在=java.security包下。

下面 贴上代码:

package test;import java.security.MessageDigest;import com.sun.org.apache.xml.internal.security.utils.Base64;public class Test { public static void main(String[] args)  { Test my=new Test(); my.testDigest(); } @SuppressWarnings("static-access")public void testDigest() { try { String myinfo="我的测试信息"; //确定计算摘要的算法  一般有MD5 SHA-1等  其中md5计算出的摘要是15位  SHA-1计算出的摘要是20位MessageDigest alga=MessageDigest.getInstance("MD5"); // MessageDigest alga=MessageDigest.getInstance("SHA-1"); //添加要进行计算摘要的信息alga.update(myinfo.getBytes()); //计算出摘要byte[] digesta=alga.digest(); //查看摘要信息System.out.println("摘要信息是:"+new String(Base64.encode(digesta)));// 通过某中方式传给其他人你的信息 (myinfo) 和摘要 (digesta) 对方可以判断是否更改或传输正常MessageDigest algb=MessageDigest.getInstance("MD5"); // 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("非法摘要算法"); } } }

 

 

原创粉丝点击