Java SHA-256加密的两种实现方法详解
本文实例讲述了JavaSHA-256加密的两种实现方法。分享给大家供大家参考,具体如下:
最近在做注册的一个功能,密码要进行加密,一开始想用MD5加密,但是听说被破解了已经,于是想玩玩SHA-256加密。学习了下,总结两种方法供后面参考:
1、利用Apache的工具类实现加密:
maven:
commons-codec commons-codec ${common-codec.version}
实现代码:
/***
*利用Apache的工具类实现SHA-256加密
*@paramstr加密后的报文
*@return
*/
publicstaticStringgetSHA256Str(Stringstr){
MessageDigestmessageDigest;
StringencdeStr="";
try{
messageDigest=MessageDigest.getInstance("SHA-256");
byte[]hash=messageDigest.digest(str.getBytes("UTF-8"));
encdeStr=Hex.encodeHexString(hash);
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
returnencdeStr;
}
2、利用Java自带的实现加密:
/**
*利用java原生的摘要实现SHA256加密
*@paramstr加密后的报文
*@return
*/
publicstaticStringgetSHA256StrJava(Stringstr){
MessageDigestmessageDigest;
StringencodeStr="";
try{
messageDigest=MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes("UTF-8"));
encodeStr=byte2Hex(messageDigest.digest());
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
returnencodeStr;
}
/**
*将byte转为16进制
*@parambytes
*@return
*/
privatestaticStringbyte2Hex(byte[]bytes){
StringBufferstringBuffer=newStringBuffer();
Stringtemp=null;
for(inti=0;i
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
在线SHA1加密工具:
http://tools.jb51.net/password/sha1encode
文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具: