java实现MD5加密

之前需要将一个.net项目迁移到java平台,哥一听这个,就懵了,没搞过.net啊,各种坑,各种心酸无力,在此就不表了。不过.net与java语法差不多,凭着我的执着与合理安排,最终项目迁移成功。在此过程中,接触了各种加解密算法,也算是一种收获,本着事后总结的原则,特写此主题文章。

MD5主要用在验签,与此用途相类似的还有RSA。特别是涉及到金额以及一些重要参数传输上,为了避免参数被拦截篡改,故在请求前需要对参数中一些重要参数按照一定顺序进行MD5加密,然后将加密后的签名也一并传输到服务端,服务端再对这些重要参数按照之前约定的顺序进行MD5加密,并将此加密后的密文与传输过来的签名进行equals判断,如果相等,则参数没被篡改,如果不等,则说明参数被篡改。废话不多说,代码奉上。


import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {

	/**
	 * MD5加密
	 * @param source	源字符串
	 * @return	加密后的密文
	 * @throws NoSuchAlgorithmException
	 * @throws UnsupportedEncodingException
	 */
	public static String encode(String source) throws NoSuchAlgorithmException,
			UnsupportedEncodingException {
		// 确定计算方法
		MessageDigest md5 = MessageDigest.getInstance("MD5");
		// 加密后的字符串
		byte[] bytes = md5.digest(source.getBytes("utf-8"));
		return bytesToHexString(bytes);
	}

	private static String bytesToHexString(byte[] bArray) {
		StringBuilder sb = new StringBuilder(bArray.length);
		String sTemp;
		for (int i = 0,j=bArray.length; i < j; i++) {
			sTemp = Integer.toHexString(0xFF & bArray[i]);
			if (sTemp.length() < 2) {
				sb.append(0);
			}
			sb.append(sTemp);
		}
		return sb.toString();
	}
}


你可能感兴趣的:(java,加解密)