我也是简单的查阅了网上的一些资料
发现用sha-2的人还是相对比较多的了,有原因是因为其他存在破解的风险性还有听说pip等其他的一些将md5算法转而sha-256
sha-256算法是sha-2里面的其中一个,为什么呢,主要也是因为这个算法大多都在用,至少现在没有什么问题
具体的sha-256算法实现如下所示:
package com.read.data;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.security.MessageDigest;
import static com.read.data.utils.CommonUtils.printf;
@RunWith(SpringRunner.class)
@SpringBootTest
public class ReadDataAuthorityApplicationTests {
@Test
public void contextLoads() {
printf(getSHA256("123"));
}
/**
* * 利用java原生的类实现SHA256加密
* * @param str 加密后的报文
* * @return
*
*/
public static String getSHA256(String str) {
MessageDigest messageDigest;
String encodestr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes("UTF-8"));
encodestr = byte2Hex(messageDigest.digest());
} catch (Exception e) {
e.printStackTrace();
}
return encodestr;
}
/**
* * 将byte转为16进制
* * @param bytes
* * @return
*
*/
private static String byte2Hex(byte[] bytes) {
StringBuffer stringBuffer = new StringBuffer();
String temp = null;
for (int i = 0; i < bytes.length; i++) {
temp = Integer.toHexString(bytes[i] & 0xFF);
if (temp.length() == 1) {
//1得到一位的进行补0操作
stringBuffer.append("0");
}
stringBuffer.append(temp);
}
return stringBuffer.toString();
}
}