2011-06-16 65 views
12

.NET的AES不直接实现CTR。它只实现CBC,CFB,CTS,ECB和OFB。我可以在.NET的CTR模式下使用AES吗?

我可以使用这些模式中的任何一种,并在他们周围安全地实现点击率,或者我是否需要完全使用不同的图书馆?

+0

为什么你必须使用点击率?它对CBC有什么优势? – 2011-06-16 17:24:54

+0

我正在实施无填充的高速互联网流,并建议使用基于点击率的EAX。 – jnm2 2011-06-16 17:28:28

+0

@Petey据我所知,CTR允许随机访问,CBC没有。 – CodesInChaos 2011-06-16 20:46:45

回答

11

是的,你可以在ECB模式和计数器使用.NET的AES建立一个点击率,是你自己初始化和增量,用于加密每个块。

一个例子是WinZipAes加密流,它是开源DotNetZip的一部分。
WinZip指定在加密ZIP文件中使用AES加密,在CTR模式下使用AES。 DotNetZip使用ECB和计数器实现CTR模式。

查看here的一些评论。

4

充气城堡的对称加密方法似乎支持CTR:

  • 对称密钥算法:AES,河豚,茶花,CAST5,CAST6,DESede,DES,GOST28147,HC-128,HC-256,IDEA, NaccacheStern,RC2,RC4,RC5-32,RC5-64,RC6,Rijndael,蛇,Skip鱼,TEA/XTEA,Twofish和VMPC。
  • 对称键模式:CBC,CFB,CTS,GOFB,OFB,OpenPGPCFB和SIC(又名CTR)。

http://www.bouncycastle.org/csharp/

4

所有您需要做的就是在密钥(无填充,无IV)的情况下在ECB模式下使用AES加密128位计数器。然后纯文本与计数器的加密输出XOR。对于每个块,计数器递增。由于XOR运算符的属性,加密和解密是相同的。

你可以找到AES128 CTR模式在这里实现(我自己):

https://gist.github.com/hanswolff/8809275

应该很容易使用。

+0

使用您的实现未解密最后的字节。会有什么问题? – 2016-03-15 06:26:54

相关问题