Stavo testando rc4-40
out con una chiave a 200 bit (25 byte) e, con mia sorpresa, i risultati erano identici a quelli di rc4
:
<?php
$key_size = 25;
$key = '';
for ($i = 0; $i < $key_size; $i++) {
$key.= chr(mt_rand(0, 255));
}
$a = openssl_encrypt(str_repeat('z', 50), 'rc4-40', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);
$b = openssl_encrypt(str_repeat('z', 50), 'rc4', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING);
echo $a == $b ? 'good' : 'bad';
Fonte: link
Ho capito, in base a post come RC4 non funziona correttamente con il comando openssl? , that rc4-40
supporta solo le chiavi a 40 bit e rc4
supporta solo le chiavi a 128 bit. Ma qui abbiamo entrambi che supportano apparentemente una chiave da 200 bit.
Anche il link dà l'idea che rc4-40
è fissato a 40-bit e rc4
è fissato a 128 bit (entrambi sembrano discostarsi dal codice precedente):
rc4 128 bit RC4
rc4-64 64 bit RC4
rc4-40 40 bit RC4
Anche se rc4
, in questo esempio, semplicemente le chiavi troncate che dovevano long a 128 bit e rc4-40
troncate più a lungo delle chiavi supportate a 40 bit, è comunque logico che i risultati sarebbero diversi, ma non lo sono.
Quindi perché tutta la letteratura online implica che sono a lunghezza fissa quando i miei test suggeriscono che non lo sono?