Java 實現字符串SHA1加密方法
Java 字符串SHA1加密
導入類
import java.security.MessageDigest;
定義函數
private String toUserPwd(final String password) { try { if (password == null) { return null; } final MessageDigest messageDigest = MessageDigest.getInstance("SHA"); final byte[] digests = messageDigest.digest(password.getBytes()); final StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < digests.length; i++) { int halfbyte = (digests[i] >>> 4) & 0x0F; for (int j = 0; j <= 1; j++) { stringBuilder.append( ((0 <= halfbyte) && (halfbyte <= 9)) ? (char) ('0' + halfbyte) : (char) ('a' + (halfbyte - 10))); halfbyte = digests[i] & 0x0F; } } return stringBuilder.toString(); } catch (final Throwable throwable) { this.log.error("error converting password", throwable); return null; } }
javaSHA1實現加密解密
封裝一個方法用於加密
/** * sha1加密 * @param data * @return * @throws NoSuchAlgorithmException */ public static String sha1(String data) throws NoSuchAlgorithmException { //加鹽 更安全一些 data += "lyz"; //信息摘要器 算法名稱 MessageDigest md = MessageDigest.getInstance("SHA1"); //把字符串轉為字節數組 byte[] b = data.getBytes(); //使用指定的字節來更新我們的摘要 md.update(b); //獲取密文 (完成摘要計算) byte[] b2 = md.digest(); //獲取計算的長度 int len = b2.length; //16進制字符串 String str = "0123456789abcdef"; //把字符串轉為字符串數組 char[] ch = str.toCharArray(); //創建一個40位長度的字節數組 char[] chs = new char[len*2]; //循環20次 for(int i=0,k=0;i<len;i++) { byte b3 = b2[i];//獲取摘要計算後的字節數組中的每個字節 // >>>:無符號右移 // &:按位與 //0xf:0-15的數字 chs[k++] = ch[b3 >>> 4 & 0xf]; chs[k++] = ch[b3 & 0xf]; } //字符數組轉為字符串 return new String(chs); }
主函數測試
public static void main(String[] args) throws NoSuchAlgorithmException { String data = "跳梁小豆tlxd666"; String result = sha1(data); System.out.println("加密後:"+result); }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。