热门问题
时间线
聊天
视角

RC6

来自维基百科,自由的百科全书

RC6
Remove ads

密碼學中,RC6Rivest cipher 6)是一個從RC5衍生而來的對稱分組加密演算法。它由羅納德·李維斯特Matt Robshaw、Ray Sidney以及 Ray Sidney設計,用以滿足與進階加密標準(AES)競賽的要求。這個演算法的是當時五個決賽候選演算法之一,並且還提交給了NESSIECRYPTREC專案。這是一個專利演算法,專利由RSA公司申請。

快速預覽 概述, 設計者 ...

RC6擁有128位元的塊大小,支援128、192、256位乃至2040位的金鑰長度。像RC5一樣,RC6是可以被參數化的。它也因而支援變長的分組大小、金鑰長度以及加密輪數。RC6和RC5在很多方面相似,例如結構、使用基於資料的置換規則、取模加法以及互斥或操作。事實上,RC6可以被看做是交織的兩組平行的RC5加密。RC6使用了在RC5加密演算法中並沒有出現的乘法運算,這個運算是為了讓置換基於中每一位,而不是其中的幾位。

Remove ads

加密和解密

請注意,金鑰擴充演算法幾乎是和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]
Remove ads

NSA「植入」代碼中可能使用了RC6

2016年8月,一些被認為是來自方程式組織國家安全局的代碼被公開,這些代碼"植入"了多種網路安全裝置。[2]所附說明顯示,這些程式使用了RC6以確保網路通訊的機密性。[3]

使用許可

RC6沒有被AES選擇,因為它不能保證RC6是免費的。截至2017年1月 (2017-01),來自RSA實驗室的RC6的設計者們在他們的官方網站上聲明:[4]

"我們強調,如果RC6被選為AES,在產品中使用該演算法,RSA公司將要求任何許可證或授權費用"。

強調的詞"如果"表明,RSA安全公司可能對任何使用了RC6的產品要求授權許可和支付授權費。RC6是一個專利加密演算法(美國專利5,724,428美國專利5,835,600);但是,專利已經在2015年到2017年間過期。

注釋

  • Pavan, R.L.; Robshaw, M.J.B.; Sidney, R.; Yin., Y.L. The RC6 Block Cipher (PDF). v1.1. 1998-08-20 [2015-08-02]. (原始內容存檔 (PDF)於2015-10-10).
Remove ads

參考資料

外部連結

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads