JAVA上加密演算法的實現用例

2021-04-01 04:30:48 字數 1256 閱讀 9876

第1章 基礎知識

1.1. 單鑰密碼體制

單鑰密碼體制是一種傳統的加密演算法,是指資訊的傳送方和接收方共同使用同一把金鑰進行加解密。

通常,使用的加密演算法比較簡便高效,金鑰簡短,加解密速度快,破譯極其困難。但是加密的安全性依靠金鑰保管的安全性,在公開的計算機網路上安全地傳送和保管金鑰是乙個嚴峻的問題,並且如果在多使用者的情況下金鑰的保管安全性也是乙個問題。

單鑰密碼體制的代表是美國的des

1.2. 訊息摘要

乙個訊息摘要就是乙個資料塊的數字指紋。即對乙個任意長度的乙個資料塊進行計算,產生乙個唯一指印(對於sha1是產生乙個20位元組的二進位制陣列)。

訊息摘要有兩個基本屬性:

兩個不同的報文難以生成相同的摘要

難以對指定的摘要生成乙個報文,而由該報文反推算出該指定的摘要

代表:美國國家標準技術研究所的sha1和麻省理工學院ronald rivest提出的md5

1.3. diffie-hellman金鑰一致協議

金鑰一致協議是由公開金鑰密碼體制的奠基人diffie和hellman所提出的一種思想。

先決條件,允許兩名使用者在公開**上交換資訊以生成/"一致/"的,可以共享的金鑰

代表:指數金鑰一致協議(exponential key agreement protocol)

1.4. 非對稱演算法與公鑰體系

2023年,dittie和hellman為解決金鑰管理問題,在他們的奠基性的工作/"密碼學的新方向/"一文中,提出一種金鑰交換協議,允許在不安全的**上通過通訊雙方交換資訊,安全地傳送秘密金鑰。在此新思想的基礎上,很快出現了非對稱金鑰密碼體制,即公鑰密碼體制。在公鑰體制中,加密金鑰不同於解密金鑰,加密金鑰公之於眾,誰都可以使用;解密金鑰只有解密人自己知道。它們分別稱為公開金鑰(public key)和秘密金鑰(private key)。

迄今為止的所有公鑰密碼體系中,rsa系統是最著名、最多使用的一種。rsa公開金鑰密碼系統是由r.rivest、a.shamir和l.adleman俊教授於2023年提出的。rsa的取名就是來自於這三位發明者的姓的第乙個字母

1.5. 數字簽名

所謂數字簽名就是資訊傳送者用其私鑰對從所傳報文中提取出的特徵資料(或稱數字指紋)進行rsa演算法操作,以保證發信人無法抵賴曾發過該資訊(即不可抵賴性),同時也確保資訊報文在經簽名後末被篡改(即完整性)。當資訊接收者收到報文後,就可以用傳送者的公鑰對數字簽名進行驗證。 

在數字簽名中有重要作用的數字指紋是通過一類特殊的雜湊函式(hash函式)生成的,對這些hash函式的特殊要求是:

RSA加密演算法的java實現

演算法描述 1 選擇一對不同的 足夠大的素數p,q。2 計算n pq。3 計算f n p 1 q 1 同時對p,q嚴加保密,不讓任何人知道。4 找乙個與f n 互質的數e,且1 e f n 5 計算d,使得de 1 mod f n 這個公式也可以表達為d e 1 mod f n 這裡要解釋一下,是數...

C AES加密演算法實現

密碼學中的高階加密標準 advanced encryption standard,aes 又稱rijndael加密法,是美國聯邦 採用的一種區塊加密標準。這個標準用來替代原先的des,已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高階加密標準由美國國家標準與技術研究院 nist 於2001年...

各種Java加密演算法2

base64的加密解密是雙向的,可以求反解。md5 sha以及hmac是單向加密,任何資料加密後只會產生唯一的乙個加密串,通常用來校驗資料在傳輸過程中是否被修改。其中hmac演算法有乙個金鑰,增強了資料傳輸過程中的安全性,強化了演算法外的不可控因素。單向加密的用途主要是為了校驗資料在傳輸過程中是否被...