2014-10-22 55 views
0

我是新的C + +代码,我尝试打开crypt ++库中的AES代码添加圆键和混合列,但我没有知道如何访问它们 任何一个可以帮助我,请 感谢我怎么才能找到加密轮密钥和密码+库的AES混合列代码

+1

它们可能[在此文件中](http://sourceforge.net/p/cryptopp/code/HEAD/tree/trunk/c5/rijndael.cpp)。你的问题到底是什么 - 寻找来源,或者认识到这些部分或其他东西?如果你只是想定义,你不能找到一个更简单的参考实现或读取算法描述的地方? – Rup 2014-10-22 08:53:04

+0

谢谢,但我需要的加密代码(sbox_add轮密钥和混合列) – Mohammad 2014-10-22 09:42:43

+1

他们不是在那个文件?它特别是您想要的Crypto ++实现吗?它是通用的可移植C实现还是汇编优化实现?他们都在那个档案里。 – Rup 2014-10-22 09:59:12

回答

-1

我认为这是不容易找到AES轮的内部代码,

1

的AES实现是rijndael.cpp。您要求提供sbox,添加轮密钥和混合操作;他们都在QUARTER_ROUND宏:

  • QUARTER_ROUND_FE - 第一加密轮回
  • QUARTER_ROUND_E - 随后的加密轮
  • QUARTER_ROUND_LE - 最后加密轮回

和等效截至解密宏D不是E。这些被定义为

#define QUARTER_ROUND(L, T, t, a, b, c, d) \ 
    a ^= L(T, 3, byte(t)); t >>= 8;\ 
    b ^= L(T, 2, byte(t)); t >>= 8;\ 
    c ^= L(T, 1, byte(t)); t >>= 8;\ 
    d ^= L(T, 0, t); 

#define TL_M(T, i, x) (*(word32 *)((byte *)T + x*8 + (i+3)%4+1)) 
#define QUARTER_ROUND_E(t, a, b, c, d)  QUARTER_ROUND(TL_M, Te, t, a, b, c, d) 

其中

  • TL_M是混合宏
  • Te是加密的S-box
  • t是关键
  • a的一个32位的部,b,c, d是当前块的012位的32位部分
+0

但我的问题,如果这个代码在crypto ++库中使用 – Mohammad 2014-10-22 10:16:34

+0

是的,该链接是到SourceForge上的[crytopp](http://sourceforge.net/projects/cryptopp/)项目。为什么你特别需要Crypto ++实现? – Rup 2014-10-22 10:18:15

+0

虽然这是便携式版本;取决于你编译它的方式以及它运行的是什么系统,可能真的是使用文件中的一个汇编器实现。 – Rup 2014-10-22 10:23:29