本文主要是介绍java实现MD5、sha1和sha256实操理论及使用代码讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
在信息安全领域,经常会用到MD5、SHA1、SHA256算法。这三种算法都属于散列算法,或者叫作哈希算法。它们具有输入任意长度,输出长度固定,以及单向性(无法根据散列值还原出消息)的特点。
1、安全散列算法(缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。
2、SHA家族的六个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512、SHA3,由美国国家安全局(NSA)所设计。
3、SHA1目前已经证实安全性存在问题,可在2的63次方个计算复杂度内找到碰撞;但新的SHA2算法SHA-224、SHA-256、SHA-384,和SHA-512函数,并没有像SHA-1一样接受公众密码社群做详细的检验,所以它们的密码安全性还不被大家广泛的信。
MD5代码
public class MD5Util {private static String byteArrayToHexString(byte b[]) {StringBuffer resultSb = new StringBuffer();for (int i = 0; i < b.length; i++)resultSb.append(byteToHexString(b[i]));return resultSb.toString();}private static String byteToHexString(byte b) {int n = b;if (n < 0)n += 256;int d1 = n / 16;int d2 = n % 16;return hexDigits[d1] + hexDigits[d2];}public static String MD5Encode(String origin, String charsetname) {String resultString = null;try {resultString = new String(origin);MessageDigest md = MessageDigest.getInstance("MD5");if (charsetname == null || "".equals(charsetname))resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
这篇关于java实现MD5、sha1和sha256实操理论及使用代码讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!