日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

SHA1 - Java加密与安全

發布時間:2024/4/13 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SHA1 - Java加密与安全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SHA-1算法SHA-1算法也是一種哈希算法,他的輸出是160bits,也就是20個字節,SHA-1是由美國安全局開發的,這個SHA-1算法 發布以后發現有問題,所以才作廢了,這個作廢的版本叫做SHA-0,以后發布的版本叫做SHA-1,緊接著又發布了SHA-256,和SHA-512版本

我們來比較一下SHA-1的輸出長度是160位,也就是20個字節,SHA-256輸出長度是256位,也就是32個字節,SHA-512輸出長度是512bits,也就是64字節

用SHA-1算法計算摘要,和MD5非常類似,我們只是把MD5簡單的替換成SHA-1,調用MessageDigest.getInstance("SHA-1")就可以獲得一個SHA-1的MessageDigest實例,最后我們也調用digest()方法獲得SHA-1的byte字節表示的摘要,返回的是20個字節 package com.learn.securl;import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public class SHADemo {public static byte[] sha1(byte[] input) {MessageDigest md = null;try {/*** 我們注意到使用SHA-1算法的時候* 和MD5相比,* 我們只把MessageDigest.getInstance傳入的MD5改成了SHA-1* 就可以了*/md = MessageDigest.getInstance("SHA-1");} catch (NoSuchAlgorithmException e) {e.printStackTrace();}md.update(input);return md.digest();}/*** 剩下的代碼是一樣的* 另外JAVA生成的摘要是20個字節* @throws Exception */public static void main(String[] args) throws Exception {String s = "SHA1摘要算法測試";byte[] r = sha1(s.getBytes("UTF-8"));/*** 所以我們用百分號040x輸出這20個字節* c87e25c44b9c470414b7adafb05864f97e6e6e8d* */System.out.println(String.format("%040x", new BigInteger(1,r)));} } package com.learn.securl;import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;/*** 我們再來看改進的Digest* @author Leon.Sun**/ public class DigestDemo {/*** 我們對SHA1方法進行了改進* 傳入一個摘算法的名稱* 這樣我們就可以傳入任意的摘要算法來計算輸入的摘要* @param hashAlgorithm* @param input* @return*/public static byte[] digest(String hashAlgorithm, byte[] input) {MessageDigest md = null;try {md = MessageDigest.getInstance(hashAlgorithm);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}md.update(input);return md.digest();}public static void main(String[] args) throws Exception {String s = "Java摘要算法測試";byte[] input = s.getBytes("UTF-8");// 標準算法名稱/*** 我們可以訪問JDK的官方網站* ORACLE的官方網站訪問摘要算法的名稱* */// http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#MessageDigest/*** 我們來看一下常用的算法,* MD5* MD5輸出的是16個字節*/byte[] r1 = digest("MD5",input);System.out.println(r1.length + ": " + String.format("%032x", new BigInteger(1,r1)));/*** SHA-1的輸出是20個字節*/byte[] r2 = digest("SHA-1",input);System.out.println(r2.length + ": " + String.format("%040x", new BigInteger(1,r2)));/*** SHA-256* SHA-256輸出的是32個字節*/byte[] r3 = digest("SHA-256",input);System.out.println(r3.length + ": " + String.format("%0"+(r3)));/*** RipeMD160* 當我們計算RipeMD160的時候,* JDK報錯* 也就是JDK并沒有包含RipeMD160算法* 如果我們要查詢JDK標準的算法*/byte[] r4 = digest("RipeMD160",input);System.out.println(r4.length + ": " + String.format("%0"+(r4)));} } 1. SHA-1算法是一種比MD5更安全的算法2. 他還有其他的哈希算法,比如SHA-256,SHA-512,RipeMD-160

?

總結

以上是生活随笔為你收集整理的SHA1 - Java加密与安全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。