Java 文件完整性校验 MD5 sha1 sha256 sha224 sha384 sha512

由于项目中需要使用文件做备份,并且要提供备份文件的下载功能。备份文件体积较大,为确保下载后的文件与原文件一致,需要提供文件完整性校验。

网上有这么多此类文章,其中不少使用到了

org.apache.commons.codec.digest.DigestUtils

包中的方法,但是又自己做了大文件的拆分及获取相应校验码的转换。

DigestUtils 包已经提供了为文件流生成校验码的功能,可以直接调用。经测试10几G的文件在30秒内可完成计算。

(网上提供的一些自己拆分大文件的示例,文件较小时结果正确,文件较大时结果就不太可靠了)

 

实现步骤如下:

  1. pom.xml 添加依赖
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.12</version>
    </dependency>
  2. 实现类:

     

    package file.integrity.check;
    
    import org.apache.commons.codec.digest.DigestUtils;
    import java.io.File;
    import java.io.FileInputStream;
    
    public class Application {
        public static void main(String[] args) throws Exception {
            File file = new File("/path/filename");
            FileInputStream fileInputStream = new FileInputStream(file);
            String hex = DigestUtils.sha512Hex(fileInputStream);
            System.out.println(hex);
        }
    }

     

  3.  或者:

     

    import org.apache.commons.codec.digest.DigestUtils;
    import static org.apache.commons.codec.digest.MessageDigestAlgorithms.SHA_512;
    import java.io.File;
    
    public class Application {
        public static void main(String[] args) throws Exception {
            File file = new File("/path/filename");
            String hex = new DigestUtils(SHA_512).digestAsHex(file);
            System.out.println(hex);
        }
    }

     

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MD5SHA1是两种常见的哈希算法,主要用于数据加密和完整性校验MD5(Message Digest Algorithm 5)是一种广泛使用的哈希函数。它将不同长度的数据经过计算后生成一个唯一的128位(16字节)哈希MD5算法常被用于数据完整性校验、密码存储和用户身份验证等方面。通过对原始数据进行MD5哈希后,可以快速验证数据是否被篡改或者校验两个数据是否相同。 SHA1(Secure Hash Algorithm 1)也是一种常用的哈希函数,它生成一个160位(20字节)哈希。与MD5相比,SHA1算法提供了更高的安全性。SHA1逐渐被更加安全和强大的哈希算法(如SHA256)所取代,但在一些特定的应用场景,如校验文件完整性、数字签名和证书等方面,SHA1仍然被广泛应用。 在实际应用中,MD5SHA1常被用于密码存储。比如,在用户注册时,系统会将用户输入的密码进行MD5SHA1哈希并存储,而不是直接明文保存密码。当用户登录时,系统将用户输入的密码再次进行哈希,与存储的哈希进行对比,以验证密码的正确性。这样可以避免密码在存储和传输过程中被窃取。 此外,MD5SHA1也被广泛应用于验证文件完整性。在下载文件时,可以通过计算文件MD5SHA1哈希,并与发布者提供的哈希进行对比,来确保文件在传输过程中没有被篡改或损坏。 总的来说,MD5SHA1是常用的哈希算法,可以用于数据加密和完整性校验。然而,由于存在安全性问题,特别是MD5算法易受到碰撞攻击的问题,它们正逐渐被更加安全的哈希算法所取代,如SHA256SHA512等。在选择使用时,应根据具体的应用需求和安全性要求进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值