为什么AES解密比AES加密少一轮?

时间:2017-02-18 13:01:51

标签: javascript encryption cryptography aes

我正在做一些关于AES的工作,我已经看到了很多伪代码,例如,如果加密是在10轮中进行的,则解密是在9中进行的。首先是这一个,确切地说:

http://people.eku.edu/styere/Encrypt/JS-AES.html

这是正常的吗?有什么我想念的吗?它实际上是10轮解密,但我读错了代码吗?

1 个答案:

答案 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

在查找代码时,测试向量使用原始或原始文档和规范