Java?實(shí)現(xiàn)字符串SHA1加密方法
Java 字符串SHA1加密
導(dǎo)入類
import java.security.MessageDigest;
定義函數(shù)
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實(shí)現(xiàn)加密解密
封裝一個(gè)方法用于加密
/** * sha1加密 * @param data * @return * @throws NoSuchAlgorithmException */ public static String sha1(String data) throws NoSuchAlgorithmException { //加鹽 更安全一些 data += "lyz"; //信息摘要器 算法名稱 MessageDigest md = MessageDigest.getInstance("SHA1"); //把字符串轉(zhuǎn)為字節(jié)數(shù)組 byte[] b = data.getBytes(); //使用指定的字節(jié)來(lái)更新我們的摘要 md.update(b); //獲取密文 (完成摘要計(jì)算) byte[] b2 = md.digest(); //獲取計(jì)算的長(zhǎng)度 int len = b2.length; //16進(jìn)制字符串 String str = "0123456789abcdef"; //把字符串轉(zhuǎn)為字符串?dāng)?shù)組 char[] ch = str.toCharArray(); //創(chuàng)建一個(gè)40位長(zhǎng)度的字節(jié)數(shù)組 char[] chs = new char[len*2]; //循環(huán)20次 for(int i=0,k=0;i<len;i++) { byte b3 = b2[i];//獲取摘要計(jì)算后的字節(jié)數(shù)組中的每個(gè)字節(jié) // >>>:無(wú)符號(hào)右移 // &:按位與 //0xf:0-15的數(shù)字 chs[k++] = ch[b3 >>> 4 & 0xf]; chs[k++] = ch[b3 & 0xf]; } //字符數(shù)組轉(zhuǎn)為字符串 return new String(chs); }
主函數(shù)測(cè)試
public static void main(String[] args) throws NoSuchAlgorithmException { String data = "跳梁小豆tlxd666"; String result = sha1(data); System.out.println("加密后:"+result); }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis的parameterType造成線程阻塞問(wèn)題分析
這篇文章主要詳細(xì)分析了Mybatis的parameterType造成線程阻塞問(wèn)題,文中有詳細(xì)的解決方法,及相關(guān)的代碼示例,具有一定的參考價(jià)值,感興趣的朋友可以借鑒閱讀2023-06-06JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal
這篇文章主要給大家介紹了關(guān)于JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03J2SE基礎(chǔ)之下載eclipse并創(chuàng)建項(xiàng)目
本文給大家介紹的是最流行的java 集成開(kāi)發(fā)環(huán)境IDE eclipse的使用方法,非常的簡(jiǎn)單,有需要的小伙伴可以參考下2016-05-05IDEA編寫JavaWeb出現(xiàn)亂碼問(wèn)題解決方案
這篇文章主要介紹了IDEA編寫JavaWeb出現(xiàn)亂碼問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Spring中的BeanFactory與FactoryBean區(qū)別詳解
這篇文章主要介紹了Spring中的BeanFactory與FactoryBean區(qū)別詳解,BeanFactory是一個(gè)接口,它是spring中的一個(gè)工廠,FactoryBean也是一個(gè)接口,實(shí)現(xiàn)了3個(gè)方法,通過(guò)重寫其中方法自定義生成bean,需要的朋友可以參考下2024-01-01Java使用cookie顯示最近查看過(guò)的書(shū)
這篇文章主要為大家詳細(xì)介紹了Java使用cookie顯示最近查看過(guò)的書(shū),感興趣的小伙伴們可以參考一下2016-04-04深入理解JSON及其在Java中的應(yīng)用小結(jié)
json它是一種輕量級(jí)的數(shù)據(jù)交換格式,由于其易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,因此廣泛應(yīng)用于網(wǎng)絡(luò)數(shù)據(jù)交換和配置文件,這篇文章主要介紹了深入理解JSON及其在Java中的應(yīng)用,需要的朋友可以參考下2023-12-12JVM入門之類加載與字節(jié)碼技術(shù)(類加載與類的加載器)
Java字節(jié)碼增強(qiáng)指的是在Java字節(jié)碼生成之后,對(duì)其進(jìn)行修改,增強(qiáng)其功能,這種方式相當(dāng)于對(duì)應(yīng)用程序的二進(jìn)制文件進(jìn)行修改。Java字節(jié)碼增強(qiáng)主要是為了減少冗余代碼,提高性能等2021-06-06