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

数据数字签名算法,它不是对整个数据进行加密,而是对数据提取部分信息进行签名,采用该算法对不同的数据进行加密,会得到唯一的字符串,该字符串就像签名一样,只有该数据才可能产生这样的签名字符串。

下面是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());
}
}
}

本文摘取自: https://blog.csdn.net/zeb_perfect/article/details/42319153

posted @ 2019-04-09 11:17  looyee  阅读(466)  评论(0编辑  收藏  举报