2011-06-16 20 views
12

. AES de .NET no implementa CTR directamente. Solo implementa CBC, CFB, CTS, BCE y OFB.¿Puedo usar AES en modo CTR en .NET?

¿Puedo usar cualquiera de estos modos e implementar CTR de forma segura a su alrededor, o necesito usar una biblioteca diferente por completo?

aplicación de cifrado simétrico
+0

¿Por qué debe usar CTR? ¿Qué ventaja tiene sobre CBC? –

+0

Estoy implementando una transmisión de Internet de alta velocidad sin relleno y se recomendó EAX, que se basa en CTR. – jnm2

+0

@Petey Según tengo entendido, CTR permite el acceso aleatorio, CBC no. – CodesInChaos

Respuesta

11

Sí, se puede construir un CTR usando un algoritmo AES de .NET en modo ECB y un contador, que usted mismo para inicializar y la subasta, para cada bloque encriptado.

Un ejemplo de esto es la secuencia de cifrado de WinZipAes, que es parte del código abierto DotNetZip.
WinZip especifica el uso del cifrado AES para archivos ZIP cifrados, utilizando AES en modo CTR. DotNetZip implementa el modo CTR usando ECB y el contador.

Ver here para algunos comentarios.

4

del Castillo Hinchable parece apoyar CTR:

  • simétricas algoritmos de clave: AES, Blowfish, camelia, CAST5, CAST6, Desede, DES, GOST28147, HC-128, HC-256, IDEA, NaccacheStern, RC2, RC4, RC5-32, RC5-64, RC6, Rijndael, Serpiente, Skipjack, TEA/XTEA, Twofish y VMPC.
  • Modos de tecla simétrica: CBC, CFB, CTS, GOFB, OFB, OpenPGPCFB y SIC (también conocido como CTR).

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

4

Todo lo que necesita hacer es utilizar AES en modo ECB con una tecla (sin relleno, sin IV) para encriptar un contador de 128 bits. El texto plano se XORiza con la salida cifrada del contador. Para cada bloque, el contador se incrementa. El cifrado y el descifrado son los mismos debido a las propiedades del operador XOR.

Usted puede encontrar una aplicación (la mía) para el modo AES128 CTR aquí:

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

Debe ser fácil de usar.

+0

los últimos bytes no se descifran usando su implementación. ¿Cuál será el problema? –

Cuestiones relacionadas