當前位置:首頁 » 操作系統 » 常用密碼演算法

常用密碼演算法

發布時間: 2022-09-09 22:24:30

1. 對稱加密演算法的加密演算法主要有哪些

1、3DES演算法

3DES(即Triple DES)是DES向AES過渡的加密演算法(1999年,NIST將3-DES指定為過渡的加密標准),加密演算法,其具體實現如下:設Ek()和Dk()代表DES演算法的加密和解密過程,K代表DES演算法使用的密鑰,M代表明文,C代表密文,這樣:

3DES加密過程為:C=Ek3(Dk2(Ek1(M)))

3DES解密過程為:M=Dk1(EK2(Dk3(C)))

2、Blowfish演算法

BlowFish演算法用來加密64Bit長度的字元串。

BlowFish演算法使用兩個「盒」——unsignedlongpbox[18]和unsignedlongsbox[4,256]。

BlowFish演算法中,有一個核心加密函數:BF_En(後文詳細介紹)。該函數輸入64位信息,運算後,以64位密文的形式輸出。用BlowFish演算法加密信息,需要兩個過程:密鑰預處理和信息加密。

分別說明如下:

密鑰預處理:

BlowFish演算法的源密鑰——pbox和sbox是固定的。我們要加密一個信息,需要自己選擇一個key,用這個key對pbox和sbox進行變換,得到下一步信息加密所要用的key_pbox和key_sbox。具體的變化演算法如下:

1)用sbox填充key_sbox

2)用自己選擇的key8個一組地去異或pbox,用異或的結果填充key_pbox。key可以循環使用。

比如說:選的key是"abcdefghijklmn"。則異或過程為:

key_pbox[0]=pbox[0]abcdefgh;

key_pbox[1]=pbox[1]ijklmnab;

…………

…………

如此循環,直到key_pbox填充完畢。

3)用BF_En加密一個全0的64位信息,用輸出的結果替換key_pbox[0]和key_pbox[1],i=0;

4)用BF_En加密替換後的key_pbox,key_pbox[i+1],用輸出替代key_pbox[i+2]和key_pbox[i+3];

5)i+2,繼續第4步,直到key_pbox全部被替換;

6)用key_pbox[16]和key_pbox[17]做首次輸入(相當於上面的全0的輸入),用類似的方法,替換key_sbox信息加密。

信息加密就是用函數把待加密信息x分成32位的兩部分:xL,xRBF_En對輸入信息進行變換。

3、RC5演算法

RC5是種比較新的演算法,Rivest設計了RC5的一種特殊的實現方式,因此RC5演算法有一個面向字的結構:RC5-w/r/b,這里w是字長其值可以是16、32或64對於不同的字長明文和密文塊的分組長度為2w位,r是加密輪數,b是密鑰位元組長度。

(1)常用密碼演算法擴展閱讀:

普遍而言,有3個獨立密鑰的3DES(密鑰選項1)的密鑰長度為168位(三個56位的DES密鑰),但由於中途相遇攻擊,它的有效安全性僅為112位。密鑰選項2將密鑰長度縮短到了112位,但該選項對特定的選擇明文攻擊和已知明文攻擊的強度較弱,因此NIST認定它只有80位的安全性。

對密鑰選項1的已知最佳攻擊需要約2組已知明文,2部,2次DES加密以及2位內存(該論文提到了時間和內存的其它分配方案)。

這在現在是不現實的,因此NIST認為密鑰選項1可以使用到2030年。若攻擊者試圖在一些可能的(而不是全部的)密鑰中找到正確的,有一種在內存效率上較高的攻擊方法可以用每個密鑰對應的少數選擇明文和約2次加密操作找到2個目標密鑰中的一個。

2. 現在密碼學採用的演算法主要有什麼

現代密碼學將演算法分為具有不同功能的幾種
常用的主要有三種:
1.對稱密碼演算法
DES演算法——二十世紀七十年代提出,曾經稱霸對稱加密領域30年
AES演算法——二十一世紀初提出用以取代DES演算法
IDEA演算法——二十世紀九十年代初提出,也是一種流行演算法
RC4演算法——經典的流密碼演算法
2.公鑰密碼演算法
D-H演算法——用於密鑰協商,是第一種使用的公鑰演算法,基於離散對數難解問題
RSA演算法——最常用的公鑰演算法,功能強大
3.哈希函數(雜湊函數)
MD5——常用演算法,用於產生80比特的輸出
SHA-1——也是常用演算法,用於產生128比特輸出
---
這是最經典的若干種演算法
說的不對之處請指正

------
個人意見 僅供參考

3. 十大常見密碼加密方式

一、密鑰散列

採用MD5或者SHA1等散列演算法,對明文進行加密。嚴格來說,MD5不算一種加密演算法,而是一種摘要演算法。無論多長的輸入,MD5都會輸出一個128位(16位元組)的散列值。而SHA1也是流行的消息摘要演算法,它可以生成一個被稱為消息摘要的160位(20位元組)散列值。MD5相對SHA1來說,安全性較低,但是速度快;SHA1和MD5相比安全性高,但是速度慢。

二、對稱加密

採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密。對稱加密演算法中常用的演算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

三、非對稱加密

非對稱加密演算法是一種密鑰的保密方法,它需要兩個密鑰來進行加密和解密,這兩個密鑰是公開密鑰和私有密鑰。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密。非對稱加密演算法有:RSA、Elgamal、背包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)。

四、數字簽名

數字簽名(又稱公鑰數字簽名)是只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是在使用了公鑰加密領域的技術來實現的,用於鑒別數字信息的方法。

五、直接明文保存

早期很多這樣的做法,比如用戶設置的密碼是「123」,直接就將「123」保存到資料庫中,這種是最簡單的保存方式,也是最不安全的方式。但實際上不少互聯網公司,都可能採取的是這種方式。

六、使用MD5、SHA1等單向HASH演算法保護密碼

使用這些演算法後,無法通過計算還原出原始密碼,而且實現比較簡單,因此很多互聯網公司都採用這種方式保存用戶密碼,曾經這種方式也是比較安全的方式,但隨著彩虹表技術的興起,可以建立彩虹表進行查表破解,目前這種方式已經很不安全了。

七、特殊的單向HASH演算法

由於單向HASH演算法在保護密碼方面不再安全,於是有些公司在單向HASH演算法基礎上進行了加鹽、多次HASH等擴展,這些方式可以在一定程度上增加破解難度,對於加了「固定鹽」的HASH演算法,需要保護「鹽」不能泄露,這就會遇到「保護對稱密鑰」一樣的問題,一旦「鹽」泄露,根據「鹽」重新建立彩虹表可以進行破解,對於多次HASH,也只是增加了破解的時間,並沒有本質上的提升。

八、PBKDF2

該演算法原理大致相當於在HASH演算法基礎上增加隨機鹽,並進行多次HASH運算,隨機鹽使得彩虹表的建表難度大幅增加,而多次HASH也使得建表和破解的難度都大幅增加。

九、BCrypt

BCrypt 在1999年就產生了,並且在對抗 GPU/ASIC 方面要優於 PBKDF2,但是我還是不建議你在新系統中使用它,因為它在離線破解的威脅模型分析中表現並不突出。

十、SCrypt

SCrypt 在如今是一個更好的選擇:比 BCrypt設計得更好(尤其是關於內存方面)並且已經在該領域工作了 10 年。另一方面,它也被用於許多加密貨幣,並且我們有一些硬體(包括 FPGA 和 ASIC)能實現它。 盡管它們專門用於采礦,也可以將其重新用於破解。

4. 密碼加密的演算法有哪些

主要分為 對稱加密演算法 和 非對稱加密演算法兩類

對稱加密演算法:使用單個密鑰對數據進行加密或解密,其特點是計算量小,加密效率高.
代表 DES 演算法

非對稱加密演算法:此演算法均有兩個密鑰(公用密鑰和私有密鑰),只有二者搭配使用才能完成加密和解密的全過程.
代表 DSA演算法, 數字簽名演算法(DSA) , MD5演算法 , 安全散列演算法(SHA)

5. 世界常用密碼暗號是什麼

一、RSA演算法密碼

RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。RSA演算法是一種非對稱密碼演算法,所謂非對稱,就是指該演算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。

二、ECC加密法密碼

ECC演算法也是一個能同時用於加密和數字簽名的演算法,也易於理解和操作。同RSA演算法是一樣是非對稱密碼演算法使用其中一個加密,用另一個才能解密。

三、二方密碼

二方密碼(en:Two-square_cipher)比四方密碼用更少的矩陣。

四、四方密碼

四方密碼用4個5×5的矩陣來加密。每個矩陣都有25個字母(通常會取消Q或將I,J視作同一樣,或改進為6×6的矩陣,加入10個數字)。

五、三分密碼

首先隨意製造一個3個3×3的Polybius方格替代密碼,包括26個英文字母和一個符號。然後寫出要加密的訊息的三維坐標。訊息和坐標四個一列排起,再順序取橫行的數字,三個一組分開,將這三個數字當成坐標,找出對應的字母,便得到密文。

6. 常用的對稱密碼演算法有哪些

對稱加密演算法用來對敏感數據等信息進行加密,常用的演算法包括:
DES(Data Encryption Standard):數據加密標准,速度較快,適用於加密大量數據的場合。
3DES(Triple DES):是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard):高級加密標准,是下一代的加密演算法標准,速度快,安全級別高;

7. 常用的加密演算法有哪些

對稱加密演算法(秘密鑰匙加密)和非對稱加密演算法(公開密鑰加密)。

對稱加密演算法用來對敏感數據等信息進行加密,常用的演算法包括:
DES(Data Encryption Standard):數據加密標准,速度較快,適用於加密大量數據的場合。
3DES(Triple DES):是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard):高級加密標准,是下一代的加密演算法標准,速度快,安全級別高;
AES
常見的非對稱加密演算法如下:
RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件塊的長度也是可變的;
DSA(Digital Signature Algorithm):數字簽名演算法,是一種標準的 DSS(數字簽名標准);
ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。

8. 常見密碼演算法原理

PBKDF2(Password-Based Key Derivation Function)是一個用來導出密鑰的函數,用來生成加密的密碼,增加破解的難度,類似bcrypt/scrypt等,可以用來進行密碼或者口令的加密存儲。主要是鹽值+pwd,經過多輪HMAC演算法的計算,產生的密文。
PBKDF2函數的定義
DK = PBKDF2(PRF, Password, Salt, c, dkLen)
• PRF是一個偽隨機函數,例如HASH_HMAC函數,它會輸出長度為hLen的結果。
• Password是用來生成密鑰的原文密碼。
• Salt是一個加密用的鹽值。
• c是進行重復計算的次數。
• dkLen是期望得到的密鑰的長度。
• DK是最後產生的密鑰。
https://segmentfault.com/a/1190000004261009

下面我們以Alice和Bob為例敘述Diffie-Hellman密鑰交換的原理。
1,Diffie-Hellman交換過程中涉及到的所有參與者定義一個組,在這個組中定義一個大質數p,底數g。
2,Diffie-Hellman密鑰交換是一個兩部分的過程,Alice和Bob都需要一個私有的數字a,b。
下面是DH交換的過程圖:
本圖片來自wiki
下面我們進行一個實例
1.愛麗絲與鮑伯協定使用p=23以及g=5.
2.愛麗絲選擇一個秘密整數a=6, 計算A = g^a mod p並發送給鮑伯。
A = 5^6 mod 23 = 8.
3.鮑伯選擇一個秘密整數b=15, 計算B = g^b mod p並發送給愛麗絲。
B = 5^15 mod 23 = 19.
4.愛麗絲計算s = B a mod p
19^6 mod 23 = 2.
5.鮑伯計算s = A b mod p
8^15 mod 23 = 2.

ECDH:
ECC演算法和DH結合使用,用於密鑰磋商,這個密鑰交換演算法稱為ECDH。交換雙方可以在不共享任何秘密的情況下協商出一個密鑰。ECC是建立在基於橢圓曲線的離散對數問題上的密碼體制,給定橢圓曲線上的一個點P,一個整數k,求解Q=kP很容易;給定一個點P、Q,知道Q=kP,求整數k確是一個難題。ECDH即建立在此數學難題之上。密鑰磋商過程:
假設密鑰交換雙方為Alice、Bob,其有共享曲線參數(橢圓曲線E、階N、基點G)。

來自 http://www.cnblogs.com/fishou/p/4206451.html

https://zh.wikipedia.org/wiki/SHA%E5%AE%B6%E6%97%8F

exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
-----END RSA PRIVATE KEY-----
while a RSA public key contains only the following data:
-----BEGIN RSA PUBLIC KEY-----
RSAPublicKey ::= SEQUENCE {
molus INTEGER, -- n
publicExponent INTEGER -- e
}
-----END RSA PUBLIC KEY-----
and this explains why the private key block is larger.
Note that a more standard format for non-RSA public keys is
-----BEGIN PUBLIC KEY-----
PublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
PublicKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
-----END PUBLIC KEY-----
More info here.
BTW, since you just posted a screenshot of the private key I strongly hope it was just for tests :)

密鑰的長度
C:\herong>java RsaKeyGenerator 128
p: 17902136406704537069
q: 17902136406704537077
m:
Molus:
Key size: 128
Public key:
Private key:
C:\herong>java RsaKeyGenerator 256
p:
q:
m: ...
Molus: ...
Key size: 256
Public key: ...
Private key: ...

https://security.stackexchange.com/questions/90169/rsa-public-key-and-private-key-lengths
https://stackoverflow.com/questions/2921508/trying-to-understand-java-rsa-key-size >

http://www.herongyang.com/Cryptography/RSA-BigInteger-Keys-Generated-by-RsaKeyGenerator-java.html

update() adds data to the Cipher』s internal buffer, then returns all currently completely encoded blocks. If there are any encoded blocks left over, they remain in the Cipher』s buffer until the next call, or a call to doFinal(). This means that if you call update() with a four byte array to encrypt, and the buffer size is eight bytes, you will not receive encoded data on the return (you』ll get a null instead). If your next call to update() passes five bytes of data in, you will get an 8 byte (the block size) array back, containing the four bytes passed in on the previous call, the first four bytes from the current call – the remaining byte from the current call is left in the Cipher』s buffer.
doFinal() on the other hand is much simpler: it encrypts the passed data, pads it out to the necessary length, and then returns it. The Cipher is essentially stateless.

來自 https://segmentfault.com/a/1190000006931511

DH演算法的中間人攻擊
在最初的描述中,迪菲-赫爾曼密鑰交換本身並沒有提供通訊雙方的身份驗證服務,因此它很容易受到中間人攻擊。 一個中間人在信道的中央進行兩次迪菲-赫爾曼密鑰交換,一次和Alice另一次和Bob,就能夠成功的向Alice假裝自己是Bob,反之亦然。而攻擊者可以解密(讀取和存儲)任何一個人的信息並重新加密信息,然後傳遞給另一個人。因此通常都需要一個能夠驗證通訊雙方身份的機制來防止這類攻擊。

優缺點:
1、 僅當需要時才生成密鑰,減小了將密鑰存儲很長一段時間而致使遭受攻擊的機會。
2、 除對全局參數的約定外,密鑰交換不需要事先存在的基礎結構。
然而,該技術也存在許多不足:
1、 沒有提供雙方身份的任何信息。
2、 它是計算密集性的,因此容易遭受阻塞性攻擊,即對手請求大量的密鑰。受攻擊者花費了相對多的計算資源來求解無用的冪系數而不是在做真正的工作。
3、 沒辦法防止重演攻擊。
4、 容易遭受中間人的攻擊。第三方C在和A通信時扮演B;和B通信時扮演A。A和B都與C協商了一個密鑰,然後C就可以監聽和傳遞通信量。中間人的攻擊按如下進行:
(1) B在給A的報文中發送他的公開密鑰。
(2) C截獲並解析該報文。C將B的公開密鑰保存下來並給A發送報文,該報文具有B的用戶ID但使用C的公開密鑰YC,仍按照好像是來自B的樣子被發送出去。A收到C的報文後,將YC和B的用戶ID存儲在一塊。類似地,C使用YC向B發送好像來自A的報文。
(3) B基於私有密鑰XB和YC計算秘密密鑰K1。A基於私有密鑰XA和YC計算秘密密鑰K2。C使用私有密鑰XC和YB計算K1,並使用XC和YA計算K2。
(4) 從現在開始,C就可以轉發A發給B的報文或轉發B發給A的報文,在途中根據需要修改它們的密文。使得A和B都不知道他們在和C共享通信。

9. 有多少種密碼方式除了摩斯密碼外還有什麼密碼

1、RSA演算法密碼

RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。RSA演算法是一種非對稱密碼演算法,所謂非對稱,就是指該演算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。

2、ECC加密法密碼

ECC演算法也是一個能同時用於加密和數字簽名的演算法,也易於理解和操作。同RSA演算法是一樣是非對稱密碼演算法使用其中一個加密,用另一個才能解密。

3、三分密碼

首先隨意製造一個3個3×3的Polybius方格替代密碼,包括26個英文字母和一個符號。然後寫出要加密的訊息的三維坐標。訊息和坐標四個一列排起,再順序取橫行的數字,三個一組分開,將這三個數字當成坐標,找出對應的字母,便得到密文。

4、柵欄加密法密碼

柵欄加密法是一種比較簡單快捷的加密方法。柵欄加密法就是把要被加密的文件按照一上一下的寫法寫出來,再把第二行的文字排列到第一行的後面。

5、針孔加密法密碼

這種加密法誕生於近代。由於當時郵費很貴,但是寄送報紙則花費很少。於是人們便在報紙上用針在需要的字下面刺一個孔,等到寄到收信人手裡,收信人再把刺有孔的文字依次排列,連成文章。

10. 世界上各種密碼的形式

1、RSA演算法密碼

RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。RSA演算法是一種非對稱密碼演算法,所謂非對稱,就是指該演算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。

2、ECC加密法密碼

ECC演算法也是一個能同時用於加密和數字簽名的演算法,也易於理解和操作。同RSA演算法是一樣是非對稱密碼演算法使用其中一個加密,用另一個才能解密。

3、二方密碼

二方密碼(en:Two-square_cipher)比四方密碼用更少的矩陣。

4、四方密碼

四方密碼用4個5×5的矩陣來加密。每個矩陣都有25個字母(通常會取消Q或將I,J視作同一樣,或改進為6×6的矩陣,加入10個數字)。

5、三分密碼

首先隨意製造一個3個3×3的Polybius方格替代密碼,包括26個英文字母和一個符號。然後寫出要加密的訊息的三維坐標。訊息和坐標四個一列排起,再順序取橫行的數字,三個一組分開,將這三個數字當成坐標,找出對應的字母,便得到密文。

6、仿射密碼

仿射密碼是一種替換密碼。它是一個字母對一個字母的。

7、埃特巴什碼

埃特巴什碼是一個系統:最後一個字母代表第一個字母,倒數第二個字母代表第二個字母。

8、柵欄加密法密碼

柵欄加密法是一種比較簡單快捷的加密方法。柵欄加密法就是把要被加密的文件按照一上一下的寫法寫出來,再把第二行的文字排列到第一行的後面。

9、針孔加密法密碼

這種加密法誕生於近代。由於當時郵費很貴,但是寄送報紙則花費很少。於是人們便在報紙上用針在需要的字下面刺一個孔,等到寄到收信人手裡,收信人再把刺有孔的文字依次排列,連成文章。

10、回轉輪加密法密碼

一種多碼加密法,它是用多個回轉輪,每個回轉輪實現單碼加密。這些回轉輪可以組合在一起,在每個字母加密後產生一種新的替換模式。

熱點內容
ubuntu編譯linux內核 發布:2024-05-05 19:46:05 瀏覽:6
php靜態方法調用對象 發布:2024-05-05 19:24:30 瀏覽:366
電腦LNS伺服器地址 發布:2024-05-05 19:22:15 瀏覽:375
不屬於編譯程序組成的部分是什麼 發布:2024-05-05 19:05:34 瀏覽:613
壓縮麵食 發布:2024-05-05 18:55:45 瀏覽:804
linux的gz解壓命令 發布:2024-05-05 18:24:13 瀏覽:311
伺服器機櫃屬於什麼輻射 發布:2024-05-05 18:02:10 瀏覽:336
存儲成本計算 發布:2024-05-05 18:02:10 瀏覽:584
如何把手機改安卓10 發布:2024-05-05 17:39:07 瀏覽:498
我的世界怎麼擴容伺服器內存 發布:2024-05-05 17:19:54 瀏覽:48