- Event Handlers en WinForms ... 30/07/2010
- ¡La historia clínica es mia! En el día de hoy se anunció una nueva disposición legal en la Argentina por la cual se reconoce... 23/10/2009
- La eterna discusión de quién tiene más botones Un poco más sobre la clásica disputa Mac vs.... 20/10/2009
- Use Cases vs. User Stories Opinión personal sobre el empleo de Use Cases y User Stories para definir requisitos... 20/10/2009
- Lanzamiento de Google Maps en Argentina A partir de hoy Google lanzó el Centro de Comercios Locales en Google Maps Argentina. Este... 02/10/2009
- Reloj mundial Increible reloj que da la hora en cualquier punto del planeta al mismo... 29/08/2009
- Error Saving changes is not permitted en SQL Server 2008 Solución al error que impide guardar cambios que requieren re-crear las tablas en SQL Server... 29/08/2009
- Uso de Branches y Tags con SVN El uso de branches y tags en SVN nos permite una mejor organización del trabajo en equipo. Si bien... 28/08/2009
- Cómo determinar la paridad de claves para encriptación con DES Un tema que resulta confuso es determinar si una clave DES es odd parity o even parity. El... 28/08/2009
- Power Tip para Builds Lentos en aplicaciones Mobile Si estás desarrollando una aplicación Mobile con Visual Studio, por alguna extraña razón que... 28/08/2009
Cómo determinar la paridad de claves para encriptación con DES
Un tema que resulta confuso es determinar si una clave DES es odd parity o even parity. El algoritmo DES generalmente se utiliza con claves odd parity ya que son más seguras. Un criptograma creado con una clave even parity es más fácil de desencriptar.
Marcelo Ruiz, 28/08/2009
Un tema que resulta confuso es determinar si una clave DES es odd parity o even parity. El algoritmo DES generalmente se utiliza con claves odd parity ya que son más seguras. Un criptograma creado con una clave even parity es más fácil de desencriptar.
Primero, para que nos pongamos de acuerdo, traduzcamos:
- Even: par
- Odd: impar (odd también significa extraño o raro, en inglés).
La condición para que una clave sea odd, es que cada uno de sus bytes sea odd. Si esta condición no se cumple, entonces es even.
- Si todos los bytes son odd, la clave es odd y es aceptada.
- Si al menos un byte es even, la clave es even y es rechazada. Algunos sistemas pueden hacer un ajuste para convertirla en odd.
Luego, la condición de odd o even de un byte se determina así:
- Si el número de "1" en su representación binaria es impar, entonces el byte es odd.
- Si el número de "1" en su representación binaria es par, entonces el byte es even.
Finalmente, el algoritmo para ajustar una clave even a odd debería ser byte a byte: Si un byte es even, se convierte ese byte a odd. Así para cada uno de los 8 bytes (para una clave single length). La forma en que se debería hacer este ajuste es el siguiente:
- Si el número de "1" desde el bit 1 al 7 es impar (odd), se setea el bit 8 en "0". Con esto se obtiene una cantidad impar de "1" en todo el byte, dejandolo odd.
- Si el número de "1" desde el bit 1 al 7 es par (even), se setea el bit 8 en "1". Con esto se obtiene una cantidad impar de "1" en todo el byte, dejandolo odd.
En todos los casos, se entiende que el bit 1 es el de la izquierda y el 8 el de la derecha.

