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?
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?
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:
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).
Leggi altre domande sui tag openssl