Esiste un modo per accedere a PKCS5 o 7 padding in OpenSSL senza crittografare qualcosa?

2

Come chiede il titolo. OpenSSL riempie roba con PKCS5 se si cripta qualcosa, tuttavia esiste un modo per accedere a questa funzione senza crittografare qualcosa?

    
posta Alex Gaynor 29.10.2013 - 17:27
fonte

1 risposta

1

Il padding PKCS # 5 è definito relativamente alle dimensioni del blocco del codice a blocchi sottostante. Se non ci sono codici a blocchi, allora non ci sono dimensioni del blocco, e quindi il padding è mal definito.

Tuttavia, se si prende come input aggiuntivo la dimensione del blocco s da usare, allora il padding non è difficile da implementare. Se la lunghezza dei dati è n , il padding aggiunge esattamente k byte, tale che:

  • 1 ≤ k ≤ s
  • n + k è un multiplo di s
  • i k byte hanno tutti il valore numerico k

Queste regole rendono il padding univoco. Esiste esattamente una soluzione per k , data dall'equazione: k = s - (n mod s) . Ecco un brutto script di shell (per Linux) che aggiunge il padding a un file di input:

#!/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"

(usa il nome del file di input come primo parametro e la dimensione del blocco come secondo parametro, il file imbottito viene scritto sullo standard output.)

L'operazione inversa viene lasciata come esercizio (la programmazione della shell non è molto adeguata per questo tipo di trattamento).

    
risposta data 30.10.2013 - 14:25
fonte

Leggi altre domande sui tag