1 回答
TA贡献1794条经验 获得超8个赞
在slowaes/php/aes_fast.php中,方法中 MixColumns 操作的反转mixColumns
实现不正确,else-block 必须是:
...
} else {
for ($c = 0; $c < 4; $c++) {
$t[ $c] = self::$GEX[$state[$c]] ^ self::$GBX[$state[4+$c]] ^ self::$GDX[$state[8+$c]] ^ self::$G9X[$state[12+$c]];
$t[ 4+$c] = self::$G9X[$state[$c]] ^ self::$GEX[$state[4+$c]] ^ self::$GBX[$state[8+$c]] ^ self::$GDX[$state[12+$c]];
$t[ 8+$c] = self::$GDX[$state[$c]] ^ self::$G9X[$state[4+$c]] ^ self::$GEX[$state[8+$c]] ^ self::$GBX[$state[12+$c]];
$t[12+$c] = self::$GBX[$state[$c]] ^ self::$GDX[$state[4+$c]] ^ self::$G9X[$state[8+$c]] ^ self::$GEX[$state[12+$c]];
}
}
...
解密需要 MixColumns 操作的逆运算。
方法中也有错字invMain
,第 3 行,i
必须用$i
.
通过这些更改,可以获得预期的结果,可以在此处进行验证。警告也不再显示。
我在这里提出了一个问题。请注意自述文件:该代码更多地用于教学目的。在实践中,应该使用openssl_encrypt
/或类似的。openssl_decrypt
- 1 回答
- 0 关注
- 81 浏览
添加回答
举报