¿Hay alguna forma de acceder al relleno PKCS5 o 7 en OpenSSL sin encriptar algo?

2

Como pide el título. OpenSSL rellenará cosas con PKCS5 si encriptas algo, sin embargo, ¿hay alguna forma de acceder a esta función sin encriptar algo?

    
pregunta Alex Gaynor 29.10.2013 - 17:27
fuente

1 respuesta

1

El relleno PKCS # 5 se define en relación con el tamaño de bloque del cifrado de bloque subyacente. Si no hay cifrado de bloque, entonces no hay tamaño de bloque y, por lo tanto, el relleno no está bien definido.

Sin embargo, si toma como entrada adicional el tamaño de bloque s que va a usar, entonces el relleno no es difícil de implementar. Si la longitud de los datos es n , el relleno agrega exactamente k bytes, de manera que:

  • 1 ≤ k ≤ s
  • n + k es un múltiplo de s
  • los bytes k tienen un valor numérico k

Estas reglas hacen que el relleno no sea ambiguo. Hay exactamente una solución para k , dada por la ecuación: k = s - (n mod s) . Aquí hay un script de shell feo (para Linux) que agrega el relleno a un archivo de entrada:

#!/bin/sh

input="$1"
s="$2"
n=$(wc -c < "$input")
k=$(expr "$s" - "$n" "%" "$s")
sk=""
for i in $(seq "$k") ; do
        sk="${sk}$(/usr/bin/printf "\\x%02X" "$k")"
done
cat "$input" ; /usr/bin/printf "%b" "$sk"

(use el nombre del archivo de entrada como primer parámetro y el tamaño del bloque como segundo parámetro; el archivo rellenado se escribe en la salida estándar.)

La operación inversa se deja como un ejercicio (la programación de shell no es muy adecuada para este tipo de tratamiento).

    
respondido por el Tom Leek 30.10.2013 - 14:25
fuente

Lea otras preguntas en las etiquetas