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.
Author: Marcelo Ruiz
Marcelo has been working as a software developer for more than 15 years. He has participated in projects for companies in USA, Mexico, Argentina, Europe and Africa. He is skilled with Microsoft technologies such as ASP.NET, MVC, C#, WCF and SQL Server, among others.
gracias por el aporte