『壹』 RC4演算法的介紹
RC4加密演算法是大名鼎鼎的RSA三人組中的頭號人物Ron Rivest在1987年設計的密鑰長度可變的流加密演算法簇。
『貳』 什麼是流加密
現代的文本加密主要還是對稱加密。非對稱加密太慢,而且也不適合對全文本加密,所以一般只是用在小數據加密上,比如加密文本對稱加密密鑰再傳給對方。然後文本本身還是用對稱加密。非對稱加密還有一個用處就是核實發件人身份。
現代主要有兩種對稱加密,數據流加密和數據塊加密。數據流加密就是用演算法和密鑰一起產生一個隨機碼流,再和數據流XOR一起產生加密後的數據流。解密方只要產生同樣的隨機碼流就可以了。數據塊加密把原數據分成固定大小的數據塊(比如64位),加密器使用密鑰對數據塊進行處理。一般來說數據流加密更快,但塊加密更安全一些。常見的加密法里,des和3des是使用最多的數據塊加密,aes是更新一些的塊加密法,rc4是數據流加密,等等。
二戰以後,大家一般都放棄了保護加密演算法的做法,因為太難了。而且數學上很強的演算法就這么幾種。所以現在都是公開演算法。這些演算法特性都不錯,如果一個密鑰長度不夠強了,只要加長密鑰長度就可以了。當然這種改變涉及改變加密硬軟體,在使用中有些不便,不過一般認為演算法本身還是夠強不必改變。
『叄』 現在密碼學採用的演算法主要有什麼
現代密碼學將演算法分為具有不同功能的幾種
常用的主要有三種:
1.對稱密碼演算法
DES演算法——二十世紀七十年代提出,曾經稱霸對稱加密領域30年
AES演算法——二十一世紀初提出用以取代DES演算法
IDEA演算法——二十世紀九十年代初提出,也是一種流行演算法
RC4演算法——經典的流密碼演算法
2.公鑰密碼演算法
D-H演算法——用於密鑰協商,是第一種使用的公鑰演算法,基於離散對數難解問題
RSA演算法——最常用的公鑰演算法,功能強大
3.哈希函數(雜湊函數)
MD5——常用演算法,用於產生80比特的輸出
SHA-1——也是常用演算法,用於產生128比特輸出
---
這是最經典的若干種演算法
說的不對之處請指正
------
個人意見 僅供參考
『肆』 求RC4演算法的原理,最好用通俗的語言講解,能打下比方更好了(本人能看懂一點VB跟C)
RC4經典加密演算法VB版本代碼
VB版rc4演算法
Public Sub main()
Dim key As String
For i = 1 To 16
Randomize
key = key & Chr(Rnd * 255)
Next i
MsgBox RC4(RC4("Welcome To Plindge Studio!", key), key)
End Sub
Public Function RC4(inp As String, key As String) As String
Dim S(0 To 255) As Byte, K(0 To 255) As Byte, i As Long
Dim j As Long, temp As Byte, Y As Byte, t As Long, x As Long
Dim Outp As String
For i = 0 To 255
S(i) = i
Next
j = 1
For i = 0 To 255
If j > Len(key) Then j = 1
K(i) = Asc(Mid(key, j, 1))
j = j + 1
Next i
j = 0
For i = 0 To 255
j = (j + S(i) + K(i)) Mod 256
temp = S(i)
S(i) = S(j)
S(j) = temp
Next i
i = 0
j = 0
For x = 1 To Len(inp)
i = (i + 1) Mod 256
j = (j + S(i)) Mod 256
temp = S(i)
S(i) = S(j)
S(j) = temp
t = (S(i) + (S(j) Mod 256)) Mod 256
Y = S(t)
Outp = Outp & Chr(Asc(Mid(inp, x, 1)) Xor Y)
Next
RC4 = Outp
End Function
『伍』 RC4演算法的詳細介紹
RC4加密演算法
之所以稱其為簇,是由於其核心部分的S-box長度可為任意,但一般為256位元組。該演算法的速度可以達到DES加密的10倍左右。
RC4演算法的原理很簡單,包括初始化演算法和偽隨機子密碼生成演算法兩大部分。假設S-box長度和密鑰長度均為n。先來看看演算法的初始化部分(用類C偽代碼表示):
for (i=0; i<n; i++){
s[i]=i;
}
j=0;
for (i=0; i<n; i++)
{
j=(j+s[i]+k[i])%n;
swap(s[i], s[j]);
}
在初始化的過程中,密鑰的主要功能是將S-box攪亂,i確保S-box的每個元素都得到處理,j保證S-box的攪亂是隨機的。而不同的S-box在經過偽隨機子密碼生成演算法的處理後可以得到不同的子密鑰序列,並且,該序列是隨機的:
i=j=0;
while (明文未結束)
{
++i%=n;
j=(j+s)%n;
swap(s, s[j]);
sub_k=s((s+s[j])%n);
}
得到的子密碼sub_k用以和明文進行xor運算,得到密文,解密過程也完全相同。
由於RC4演算法加密是採用的xor,所以,一旦子密鑰序列出現了重復,密文就有可能被破解。關於如何破解xor加密,請參看Bruce Schneier的Applied Cryptography一書的1.4節Simple XOR,在此我就不細說了。那麼,RC4演算法生成的子密鑰序列是否會出現重復呢?經過我的測試,存在部分弱密鑰,使得子密鑰序列在不到100萬位元組內就發生了完全的重復,如果是部分重復,則可能在不到10萬位元組內就能發生重復,因此,推薦在使用RC4演算法時,必須對加密密鑰進行測試,判斷其是否為弱密鑰。
但在2001年就有以色列科學家指出RC4加密演算法存在著漏洞,這可能對無線通信網路的安全構成威脅。
以色列魏茨曼研究所和美國思科公司的研究者發現,在使用「有線等效保密規則」(WEP)的無線網路中,在特定情況下,人們可以逆轉RC4演算法的加密過程,獲取密鑰,從而將已加密的信息解密。實現這一過程並不復雜,只需要使用一台個人電腦對加密的數據進行分析,經過幾個小時的時間就可以破譯出信息的全部內容。
專家說,這並不表示所有使用RC4演算法的軟體都容易泄密,但它意味著RC4演算法並不像人們原先認為的那樣安全。這一發現可能促使人們重新設計無線通信網路,並且使用新的加密演算法。
『陸』 在密碼學中,常見的對稱加密演算法有哪些各有什麼特點
常見的對稱加密演算法有:
DES ——密鑰短,使用時間長,硬體計算快於軟體。
IDEA——個人使用不受專利限制,可抵抗差分攻擊,基於三個群。
AES ——可變密鑰長,可變分組長。
以上三個屬於塊式,明文按分組加密。
RC4 ——流式加密,不需填充明文,密鑰長度可變。
『柒』 為什麼流密碼重用密鑰不好 rc4用到了什麼原語操作
分組密碼是將明文消息編碼表示後的數字(簡稱明文數字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分別在密鑰的控制下變換成等長的輸出數字(簡稱密文數字)序列。 序列密碼也稱為流密碼(Stream Cipher),它是對稱密碼演算法的一種 ...
『捌』 SSL使用什麼作為RC4流加密演算法
SSL版本中所用到的加密演算法包括:RC4、RC2、IDEA和DES,
而加密演算法所用的密鑰由 消息散列函數MD5產生。
RC4、RC2是由RSA定義的,其中RC2適用於塊加密,RC4適用於流 加密。
『玖』 wep 原理 第一
WEP加密演算法實際上是利用RC4流密碼演算法作為偽隨機數產生器,將由初始矢量IV和WEP密鑰組合而成的種子生成WEP密鑰流(圖中的KSA和PRGA部分),再由該密鑰流與WEP幀數據負載進行異或運算來完成加密運算.
RC4流密碼是面向位元組的,在演算法過程中只是用了置換的方法,按照圖中分成的兩個部分,其C代碼如下
KSA部分:
[cpp] view plain
int i,j = 0;
for (i = 0; i < 256; i++)
{
s[i] = i;
}
for (i = 0; i < 256; i++)
{
k[i] = key[i % 8];//針對64bit的WEP加密,128bit的為[i % 16]
}
for (i = 0; i < 256; i++)
{
j = (j + s[i] + k[i]) % 256;
Swap(s[i], s[j]);//進行置換
}
其中s[256]為狀態列,k[256]為密鑰列,key[8]為64位的密鑰,狀態列初始化為{0,1,2,3, , ,255},密鑰列按照提供的密鑰8位元組重復填充至256位元組滿,通過置換,生成了一個狀態列用以生成密鑰流.
PRGA部分(只生成256個位元組的密鑰流):
[cpp] view plain
for (i = 0, j = 0, LengthofKeyStream = 0; LengthofKeyStream < 256; LengthofKeyStream++)
{
i = (i + 1) % 256;
j = (j + s[i]) % 256;
Swap(s[i], s[j]);
keystream[LengthofKeyStream] = s[(s[i] + s[j]) % 256];
}
至此,我們就有了一個可以進行異或加密的密鑰流keystream[256].在WEP加密當中應該是根據數據data的長度來調整需要得到的密鑰流的長度。
『拾』 什麼是RC4、RC5、AES
http://ke..com/view/2310288.htm
aes加密演算法
AES加密演算法原理
隨著對稱密碼的發展,DES數據加密標准演算法由於密鑰長度較小(56位),已經不適應當今分布式開放網路對數據加密安全性的要求,因此1997年NIST公開徵集新的數據加密標准,即AES[1]。經過三輪的篩選,比利時Joan Daeman和Vincent Rijmen提交的Rijndael演算法被提議為AES的最終演算法。此演算法將成為美國新的數據加密標准而被廣泛應用在各個領域中。盡管人們對AES還有不同的看法,但總體來說,AES作為新一代的數據加密標准匯聚了強安全性、高性能、高效率、易用和靈活等優點。AES設計有三個密鑰長度:128,192,256位,相對而言,AES的128密鑰比DES的56密鑰強1021倍[2]。AES演算法主要包括三個方面:輪變化、圈數和密鑰擴展。本文以128為例,介紹演算法的基本原理;結合AVR匯編語言,實現高級數據加密演算法AES。
AES是分組密鑰,演算法輸入128位數據,密鑰長度也是128位。用Nr表示對一個數據分組加密的輪數(加密輪數與密鑰長度的關系如表1所列)。每一輪都需要一個與輸入分組具有相同長度的擴展密鑰Expandedkey(i)的參與。由於外部輸入的加密密鑰K長度有限,所以在演算法中要用一個密鑰擴展程序(Keyexpansion)把外部密鑰K擴展成更長的比特串,以生成各輪的加密和解密密鑰。
1.1圈變化
AES每一個圈變換由以下三個層組成:
非線性層——進行Subbyte變換;
線行混合層——進行ShiftRow和MixColumn運算;
密鑰加層——進行AddRoundKey運算。
① Subbyte變換是作用在狀態中每個位元組上的一種非線性位元組轉換,可以通過計算出來的S盒進行映射。
② ShiftRow是一個位元組換位。它將狀態中的行按照不同的偏移量進行循環移位,而這個偏移量也是根據Nb的不同而選擇的[3]。
③ 在MixColumn變換中,把狀態中的每一列看作GF(28)上的多項式a(x)與固定多項式c(x)相乘的結果。 b(x)=c(x)*a(x)的系數這樣計算:*運算不是普通的乘法運算,而是特殊的運算,即 b(x)=c(x)·a(x)(mod x4+1) 對於這個運算 b0=02。a0+03。a1+a2+a3 令xtime(a0)=02。a0其中,符號「。」表示模一個八次不可約多項式的同餘乘法[3]。
對於逆變化,其矩陣C要改變成相應的D,即b(x)=d(x)*a(x)。
④ 密鑰加層運算(addround)是將圈密鑰狀態中的對應位元組按位「異或」。
⑤ 根據線性變化的性質[1],解密運算是加密變化的逆變化。這里不再詳細敘述。
1.2輪變化
對不同的分組長度,其對應的輪變化次數是不同的,如表1所列。
1.3密鑰擴展
AES演算法利用外部輸入密鑰K(密鑰串的字數為Nk),通過密鑰的擴展程序得到共計4(Nr+1)字的擴展密鑰。它涉及如下三個模塊:① 位置變換(rotword)——把一個4位元組的序列[A,B,C,D]變化成[B,C,D,A];② S盒變換(subword)——對一個4位元組進行S盒代替;③ 變換Rcon——Rcon表示32位比特字[xi-1,00,00,00]。這里的x是(02),如 Rcon[1]=[01000000];Rcon[2]=[02000000];Rcon[3]=[04000000]…… 擴展密鑰的生成:擴展密鑰的前Nk個字就是外部密鑰K;以後的字W[]等於它前一個字W[[i-1]]與前第Nk個字W[[i-Nk]]的「異或」,即W[]=W[[i-1]]W[[i- Nk]]。但是若i為Nk的倍數,則W=W[i-Nk]Subword(Rotword(W[[i-1]]))Rcon[i/Nk]。
AES的加密與解密流程如圖1所示。