栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA中进行数据完整性验证

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA中进行数据完整性验证

JAVA中进行数据完整性验证
最近在看JAVA安全方面的东东。简单地说,安全包括访问控制、数据安全两部分。安全访问控制是根据系统需求进行设计的,对资源进行访问控制的一种措施。而数据安全包括数据传输过程中的安全防范措施,包括数据完整性、传输安全性,接收/发送方不可否认性等方面。下面就数据完整性验证部分做简单的介绍。
下载过程中,没有被其他程序算改过?其他程序可能是网络传输过程中的第三方盗窃者,也有可能是本地环境中存在的不良程序,如木马。在apache的下载列表旁边,我们会发现有个md5的链接,点击打开之后,会出现如下字符串:cbad484f0b02f0daf775137aeeOf4e2e"apache tomcat-7.0.21zip。这是做什么用的呢?
这是一十六进制的编码字符串,又称“数字指纹”。他其实就是对原版文件(发送方发送的文件)完整性的验证标识符。当我们把文件下到本地后,可以自己对其进行验证,若验证的结果与发送方提供的指纹一致的话,则表明,在传输过程中。数据文件没有被算改或其他损耗。

1.需要的maven依赖(支持jdk1.8及以上)

	    
		
		    org.bouncycastle
		    bcprov-jdk18on
		    1.71
		

2.示例代码

package com.ftsoft.controller;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.math.BigInteger;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.Security;

import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.encoders.Hex;

public class CompleteCcheck {
	public static void testInputStream(String filePath){
    	
    	Security.addProvider(new BouncyCastleProvider());
    	Provider provider = Security.getProvider("BC");
    	try {
	    	
	    	MessageDigest digest = MessageDigest.getInstance("MD5",provider);
	    	
	    	FileInputStream in=new FileInputStream(filePath);
	    	DigestInputStream din =new DigestInputStream(in,digest);
	    	int bfSize=40000000;
	    	int length=in.available();
	    	int currentSize=0;
	    	boolean goon=true;
	    	
	    	
	    	while(goon){
		    	byte[] buffer =new byte[bfSize];
		    	int readSize=bfSize;
		    	if((length-currentSize)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987865.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号