龙空技术网

SHA安全散列算法

评评无奇打工人 47

前言:

如今看官们对“sha256算法c源码”大概比较关注,各位老铁们都想要了解一些“sha256算法c源码”的相关知识。那么小编在网摘上网罗了一些关于“sha256算法c源码””的相关内容,希望同学们能喜欢,小伙伴们快快来了解一下吧!

SHA (Security Hash Algorithm)是安全性很高的一种 Hash 算法。

SHA五个算法包括:SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512。

多个版本的存在,是从安全、性能、空间等因素做出权衡。如果仅仅是验证数据完整性,使用SHA-512显然是浪费。

SHA-1和MD5算法之间的区别

摘要长度不同,安全性不同

SHA-1摘要长度160bit,MD5的摘要的长度128bit。多出32bit意味不同明文的碰撞几率降低,SHA-1 的安全性比MD5高。

JAVA代码实现代码一

package sha;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.math.BigInteger;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class SHAOne {    public static void main(String[] args) {        // 3G的大文件        String path = "e:/account.csv";        long start = System.currentTimeMillis();        String md5 = SHAOne.getSHA(path);        // 163b1f5d2df46bd9fc2927f3bdd7ef93cafa1693        System.out.println(md5);        // 13秒左右        System.out.println("耗时:"+(System.currentTimeMillis()-start));    }    public static String getSHA(String path) {        BigInteger bi = null;        try {            byte[] buffer = new byte[8192];            int len = 0;            MessageDigest md = MessageDigest.getInstance("SHA");            FileInputStream fis = new FileInputStream(new File(path));            while ((len = fis.read(buffer)) != -1) {                md.update(buffer, 0, len);            }            fis.close();            byte[] b = md.digest();            bi = new BigInteger(1, b);        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return bi.toString(16);    }}
代码二

使用commons-codec工具包

package sha;import org.apache.commons.codec.digest.DigestUtils;import java.io.File;import java.io.FileInputStream;import java.io.IOException;public class SHATwo {    public static void main(String[] args) {        String path = "e:/account.csv";        long start = System.currentTimeMillis();        // 163b1f5d2df46bd9fc2927f3bdd7ef93cafa1693        System.out.println(sha(path));        // 18秒左右        System.out.println("耗时:"+(System.currentTimeMillis()-start));    }    public static String sha(String path) {        String sha = null;        try {            sha = DigestUtils.sha1Hex(new FileInputStream(new File(path)));//            sha = DigestUtils.sha512Hex(new FileInputStream(new File(path)));        } catch (IOException e) {            e.printStackTrace();        }//        System.out.println(md5);        return sha;    }}

同样是3G的大文件处理,代码一耗时13秒左右,代码二耗时18秒左右。

标签: #sha256算法c源码