色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

JAVA上加密算法的實現用例

瀏覽:154日期:2024-06-11 11:52:13
內容: 內容: 第1章 基礎知識 第2章 在JAVA中的實現 第3章 小結 作者簡介 MD5/SHA1,DSA,DESede/DES,Diffie-Hellman的使用 王輝 (ddxxkk@21cn.com)2001 年 7 月 第1章基礎知識 1.1. 單鑰密碼體制單鑰密碼體制是一種傳統的加密算法,是指信息的發送方和接收方共同使用同一把密鑰進行加解密。 通常,使用的加密算法比較簡便高效,密鑰簡短,加解密速度快,破譯極其困難。但是加密的安全性依靠密鑰保管的安全性,在公開的計算機網絡上安全地傳送和保管密鑰是一個嚴峻的問題,并且如果在多用戶的情況下密鑰的保管安全性也是一個問題。單鑰密碼體制的代表是美國的DES1.2. 消息摘要一個消息摘要就是一個數據塊的數字指紋。即對一個任意長度的一個數據塊進行計算,產生一個唯一指印(對于SHA1是產生一個20字節的二進制數組)。 消息摘要有兩個基本屬性:兩個不同的報文難以生成相同的摘要 難以對指定的摘要生成一個報文,而由該報文反推算出該指定的摘要 代表:美國國家標準技術研究所的SHA1和麻省理工學院Ronald Rivest提出的MD51.3. Diffie-Hellman密鑰一致協議密鑰一致協議是由公開密鑰密碼體制的奠基人Diffie和Hellman所提出的一種思想。 先決條件,允許兩名用戶在公開媒體上交換信息以生成'一致'的,可以共享的密鑰代表:指數密鑰一致協議(Exponential Key Agreement Protocol)1.4. 非對稱算法與公鑰體系1976年,Dittie和Hellman為解決密鑰管理問題,在他們的奠基性的工作'密碼學的新方向'一文中,提出一種密鑰交換協議,允許在不安全的媒體上通過通訊雙方交換信息,安全地傳送秘密密鑰。在此新思想的基礎上,很快出現了非對稱密鑰密碼體制,即公鑰密碼體制。在公鑰體制中,加密密鑰不同于解密密鑰,加密密鑰公之于眾,誰都可以使用;解密密鑰只有解密人自己知道。它們分別稱為公開密鑰(Public key)和秘密密鑰(Private key)。 迄今為止的所有公鑰密碼體系中,RSA系統是最著名、最多使用的一種。RSA公開密鑰密碼系統是由R.Rivest、A.Shamir和L.Adleman俊教授于1977年提出的。RSA的取名就是來自于這三位發明者的姓的第一個字母1.5. 數字簽名所謂數字簽名就是信息發送者用其私鑰對從所傳報文中提取出的特征數據(或稱數字指紋)進行RSA算法操作,以保證發信人無法抵賴曾發過該信息(即不可抵賴性),同時也確保信息報文在經簽名后末被篡改(即完整性)。當信息接收者收到報文后,就可以用發送者的公鑰對數字簽名進行驗證。  在數字簽名中有重要作用的數字指紋是通過一類特殊的散列函數(HASH函數)生成的,對這些HASH函數的特殊要求是:接受的輸入報文數據沒有長度限制; 對任何輸入報文數據生成固定長度的摘要(數字指紋)輸出 從報文能方便地算出摘要; 難以對指定的摘要生成一個報文,而由該報文反推算出該指定的摘要; 兩個不同的報文難以生成相同的摘要 代表:DSA第2章在JAVA中的實現 2.1. 相關Diffie-Hellman密鑰一致協議和DES程序需要JCE工具庫的支持,可以到 http://java.sun.com/security/index.html 下載JCE,并進行安裝。簡易安裝把 jce1.2.1lib 下的所有內容復制到 %java_home%libext下,如果沒有ext目錄自行建立,再把jce1_2_1.jar和sunjce_provider.jar添加到CLASSPATH內,更詳細說明請看相應用戶手冊 2.2. 消息摘要MD5和SHA的使用使用方法: 首先用生成一個MessageDigest類,確定計算方法java.security.MessageDigest alga=java.security.MessageDigest.getInstance('SHA-1');添加要進行計算摘要的信息alga.update(myinfo.getBytes());計算出摘要byte[] digesta=alga.digest();發送給其他人你的信息和摘要其他人用相同的方法初始化,添加信息,最后進行比較摘要是否相同algb.isEqual(digesta,algb.digest())相關AIPjava.security.MessageDigest 類static getInstance(String algorithm)返回一個MessageDigest對象,它實現指定的算法參數:算法名,如 SHA-1 或MD5void update (byte input)void update (byte[] input)void update(byte[] input, int offset, int len)添加要進行計算摘要的信息byte[] digest()完成計算,返回計算得到的摘要(對于MD5是16位,SHA是20位)void reset()復位static boolean isEqual(byte[] digesta, byte[] digestb)比效兩個摘要是否相同代碼:import java.security.*;public class myDigest { public static void main(String[] args) { myDigest my=new myDigest(); my.testDigest(); } public void testDigest() { try { String myinfo='我的測試信息'; //java.security.MessageDigest alg=java.security.MessageDigest.getInstance('MD5'); java.security.MessageDigest alga=java.security.MessageDigest.getInstance('SHA-1'); alga.update(myinfo.getBytes()); byte[] digesta=alga.digest(); System.out.println('本信息摘要是:'+byte2hex(digesta)); //通過某中方式傳給其他人你的信息(myinfo)和摘要(digesta) 對方可以判斷是否更改或傳輸正常 java.security.MessageDigest algb=java.security.MessageDigest.getInstance('SHA-1'); algb.update(myinfo.getBytes()); if (algb.isEqual(digesta,algb.digest())) { System.out.println('信息檢查正常'); } else { System.out.println('摘要不相同'); } } catch (java.security.NoSuchAlgorithmException ex) { System.out.println('非法摘要算法'); } } public String byte2hex(byte[] b) //二行制轉字符串 { String hs=''; String stmp=''; for (int n=0;n
標簽: Java
相關文章:
主站蜘蛛池模板: 国产亚洲免费观看 | 亚洲2020天天堂在线观看 | 大片在线播放日本一级毛片 | 国产精品路边足疗店按摩 | 日韩a毛片免费全部播放完整 | 欧美精品免费线视频观看视频 | 欧美一区亚洲 | 免费特级毛片 | 性感美女视频黄.免费网站 性高湖久久久久久久久 | 97在线免费观看视频 | 久久免费视频网 | 免费永久国产在线视频 | 免费一级欧美性大片 | 91久久色| 亚洲综合国产一区二区三区 | fc2ppv在线播放 | 色一级片 | 日韩综合网站 | 日本爽快片100色毛片 | 日韩在线看片中文字幕不卡 | 亚洲欧美视屏 | 国产亚洲精品九九久在线观看 | 精品一区二区三区高清免费不卡 | 欧美一级片网站 | 男女性高清爱潮视频免费观看 | 黄网免费 | 久久精品国产半推半就 | 欧美国产成人一区二区三区 | 一级片一区| 1级a的观看视频 | 精品国产欧美一区二区三区成人 | 日本加勒比在线播放 | 欧美成人手机在线 | 色网站在线 | 亚洲国产精品综合久久20 | 亚洲欧美日韩中文字幕在线 | 亚洲国产免费 | 亚洲系列国产系列 | 国产大臿蕉香蕉大视频 | 日本加勒比在线观看 | 国产在线欧美日韩一区二区 |