Loading AI tools
来自维基百科,自由的百科全书
在密碼學中,RC6(Rivest cipher 6)是一個從RC5衍生而來的對稱分組加密演算法。它由羅納德·李維斯特、Matt Robshaw、Ray Sidney以及 Ray Sidney設計,用以滿足與進階加密標準(AES)競賽的要求。這個演算法的是當時五個決賽候選演算法之一,並且還提交給了NESSIE和CRYPTREC專案。這是一個專利演算法,專利由RSA公司申請。
RC6擁有128位元的塊大小,支援128、192、256位乃至2040位的金鑰長度。像RC5一樣,RC6是可以被參數化的。它也因而支援變長的分組大小、金鑰長度以及加密輪數。RC6和RC5在很多方面相似,例如結構、使用基於數據的置換規則、取模加法以及異或操作。事實上,RC6可以被看做是交織的兩組平行的RC5加密。RC6使用了在RC5加密演算法中並沒有出現的乘法運算,這個運算是為了讓置換基於字中每一位,而不是其中的幾位。
請注意,金鑰擴充演算法幾乎是和RC5相同的。 唯一的區別是,對於RC6來說,加密金鑰中更多的字來自於用戶提供的金鑰。
// Encryption/Decryption with RC6-w/r/b
//
// Input: Plaintext stored in four w-bit input registers A, B, C & D
// r is the number of rounds
// w-bit round keys S[0, ... , 2r + 3]
//
// Output: Ciphertext stored in A, B, C, D
//
// '''Encryption Procedure:'''
B = B + S[0]
D = D + S[1]
for i = 1 to r do
{
t = (B*(2B + 1)) <<< lg w
u = (D*(2D + 1)) <<< lg w
A = ((A ⊕ t) <<< u) + S[2i]
C = ((C ⊕ u) <<< t) + S[2i + 1]
(A, B, C, D) = (B, C, D, A)
}
A = A + S[2r + 2]
C = C + S[2r + 3]
// '''Decryption Procedure:'''
C = C - S[2r + 3]
A = A - S[2r + 2]
for i = r downto 1 do
{
(A, B, C, D) = (D, A, B, C)
u = (D*(2D + 1)) <<< lg w
t = (B*(2B + 1)) <<< lg w
C = ((C - S[2i + 1]) >>> t) ⊕ u
A = ((A - S[2i]) >>> u) ⊕ t
}
D = D - S[1]
B = B - S[0]
2016年8月,一些被認為是來自方程式組織或國家安全域的代碼被公開,這些代碼"植入"了多種網絡安全裝置。[2]所附說明顯示,這些程式使用了RC6以確保網絡通訊的機密性。[3]
RC6沒有被AES選擇,因為它不能保證RC6是免費的。截至2017年1月[update],來自RSA實驗室的RC6的設計者們在他們的官方網站上聲明:[4]
強調的詞"如果"表明,RSA安全公司可能對任何使用了RC6的產品要求授權許可和支付授權費。RC6是一個專利加密演算法(美國專利5,724,428,美國專利5,835,600);但是,專利已經在2015年到2017年間過期。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.