我正在做一些关于AES的工作,我已经看到了很多伪代码,例如,如果加密是在10轮中进行的,则解密是在9中进行的。首先是这一个,确切地说:
http://people.eku.edu/styere/Encrypt/JS-AES.html
这是正常的吗?有什么我想念的吗?它实际上是10轮解密,但我读错了代码吗?
答案 0 :(得分:4)
真正的问题是为什么人们相信这些网站会发布一些蹩脚的JavaScript版本的密码。
这是来自https://www.youtube.com/iframe_api的官方NIST伪代码:
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
然后爆炸,不见了。你指向的网站在加密例程中犯了一个错误,FIPS 197。
在查找代码时,测试向量使用原始或原始文档和规范。