我針對AES一些工作,我已經看到大量的僞代碼的地方,例如,如果加密在10輪進行,解密是在9這主要一個做,確切的說:爲什麼AES解密比AES加密少一輪?
http://people.eku.edu/styere/Encrypt/JS-AES.html
這是正常的嗎?有什麼我失蹤?它實際上是10輪解密,但我讀錯了代碼?
我針對AES一些工作,我已經看到大量的僞代碼的地方,例如,如果加密在10輪進行,解密是在9這主要一個做,確切的說:爲什麼AES解密比AES加密少一輪?
http://people.eku.edu/styere/Encrypt/JS-AES.html
這是正常的嗎?有什麼我失蹤?它實際上是10輪解密,但我讀錯了代碼?
真正的問題是人們爲什麼信任這些網站發佈一些糟糕的JavaScript版本的密碼。
這是官方NIST僞代碼FIPS 197:
Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])
begin
byte state[4,Nb]
state = in
AddRoundKey(state, w[0, Nb-1])
for round = 1 step 1 to Nr–1
SubBytes(state)
ShiftRows(state)
MixColumns(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) end for
SubBytes(state)
ShiftRows(state)
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
out = state
end
InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])
begin
byte state[4,Nb]
state = in
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
for round = Nr-1 step -1 downto 1
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
InvMixColumns(state) end for
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[0, Nb-1])
out = state
end
和Bang,走的是差異。您指向的網站在加密例程中犯了一個錯誤,taking it up to 11。
在尋找代碼時,測試矢量使用原始或原始文檔及規格。
謝謝!也感謝您的提示! 我只是擔心,如果AES中有一些隱藏的細節使得僞代碼正確或者是什麼,哈哈哈。 再次感謝! –
可能最好在[密碼學](http://crypto.stackexchange.com)中提出,這個領域是關於編碼的。 – zaph
Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[密碼學堆棧交換](http://crypto.stackexchange.com/)或[信息安全堆棧交換](http://security.stackexchange.com/)將是一個更好的地方要問。 – jww