生成AES (AES-256)查找表
Generating AES (AES-256) Lookup Tables
我正在尝试使用nVidia CUDA在CTR模式下实现AES-256。我已经成功地为密钥扩展编码了CPU代码,现在我需要实现实际的AES-256算法。根据维基百科,我看过的一些代码,特别是这个PDF(第9页),AES轮询可以实现为一系列的表查找。我的问题是如何生成这些表?我知道我需要4 KB来存储这些表,这不是问题。我花了一整天的时间找这些桌子,但没有找到。我发布的PDF链接提到查找表T0, T1, T2和T3,但我不知道这些是什么。它还提到了圆键4,5,6和7,但我也不明白这些索引指的是什么。
我最接近于弄清楚如何生成这些查找表是从这个项目。在代码内部,有一个注释说:
Te0[x] = S [x].[02, 01, 01, 03];
Te1[x] = S [x].[03, 02, 01, 01];
Te2[x] = S [x].[01, 03, 02, 01];
Te3[x] = S [x].[01, 01, 03, 02];
然而,我不完全确定我知道这个符号是什么意思(它是矩阵乘法还是别的什么?)。我唯一认识的是混合列部分常数矩阵,以及s盒矩阵。
[编辑]既然有人指出了这一点-查找实现如何实际上更慢?在这里实现没有查找表的AES是明智的吗?
T表是矩阵形式的AES轮询变换的直接描述。要构建它们,请参见Rijndael NIST的原始提案,第5.2.1节。
如果有人仍然感兴趣,可以在Go编程语言的标准库中找到这些查找表- http://golang.org/src/crypto/aes/const.go#L80
还有关于如何在同一包的测试文件中生成表的说明。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- QT:AES-256-CBC 根据 PHP 代码在C++中加密/解密
- AES 256-cbc 加密C++使用 OpenSSL
- 使用 AES-256 CBC 加密文本文件
- 如何使用用户定义的密码初始化AES-256密钥
- 如何通过AES-256-CBC使用密码代替密钥和IV加密文件
- AES 256 加密 - 相当于 Java 的 Qt
- 在 AES 256 加密++中获取十六进制加密字符串
- AES 256 encryption in C++ and Qt 5
- 博坦 AES-256,32 位初始矢量
- 解密AES-256加密文件不起作用
- AES、128 和 256 密钥长度无效
- Problems with CryptoPP C++ AES-256+Base64
- AES-NI 256位块加密
- 是否有aes 256与CBC加密在ubuntu/linux/unix
- OpenSSL: AES CCM 256位大文件块加密:是否可能?
- 生成AES (AES-256)查找表
- AES-256 使用 ECB 操作模式的 OpenSSL 库进行加密
- AES 256 位加密在 pdf 文件中