首页 > 代码库 > 代替MD5加密的SHA安全散列加密算法代码整理

代替MD5加密的SHA安全散列加密算法代码整理

根据以往的经验,我们通常使用MD5加密算法,尽管其可以破解,但因其周期性比较长,所以我也一直在使用,今天学习到了一种新的加密算法,安全哈希算法,确切的说他并不是数据加密算法,而是数据数字签名算法,它不是对整个数据进行加密,而是对数据提取部分信息进行签名,采用该算法对不同的数据进行加密,会得到唯一的字符串,该字符串就像签名一样,只有该数据才可能产生这样的签名字符串。

下面是java实现的SHA算法加密,我们可以使用该算法编写加密工具类:

package com.cloud.skater.util;

import java.security.MessageDigest;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Encrypt {
	private static final String KEY_SHA = "SHA";
	private static final Logger log = Logger
	.getLogger(Encrypt.class.getName());
	public static String encryptSHA(String data) throws Exception {
		MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
		sha.update(data.getBytes());
		return byteArrayToHexString(sha.digest());
	}

	// 将字节数组转换为十六进制字符串
	private static String byteArrayToHexString(byte[] bytearray) {
		String strDigest = "";
		for (int i = 0; i < bytearray.length; i++) {
			strDigest += byteToHexString(bytearray[i]);
		}
		return strDigest;
	}

	// 将字节转换为十六进制字符串
	private static String byteToHexString(byte ib) {
		char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a',
				'b', 'c', 'd', 'e', 'f' };
		char[] ob = new char[2];
		ob[0] = Digit[(ib >>> 4) & 0X0F];
		ob[1] = Digit[ib & 0X0F];
		String s = new String(ob);
		return s;
	}

	public static void main(String args[]) {
		try {
			System.out.println(Encrypt.encryptSHA("zhang1234"));
		} catch (Exception e) {
			log.log(Level.SEVERE, e.getMessage(), e.getCause());
		}
	}
}
使用它,可以直接粘贴,作为工具类。

代替MD5加密的SHA安全散列加密算法代码整理