前言:
如今看官们对“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源码