J'ai un chiffrement qui a été crypté en utilisant le module Crypt::CBC de Perl que je souhaite décrypter ailleurs.Comment décrypter le texte chiffré de Blowfish avec un en-tête salé?
Le cryptogramme a été généré en utilisant la version « simple » du constructeur Crypt::CBC
, qui est:
use Crypt::CBC;
$cipher = Crypt::CBC->new(-key => 'my secret key',
-cipher => 'Blowfish'
);
À la lecture de la page MAN, cette méthode de construction prendra la chaîne simple sel clé et aléatoire pour générer une clé littérale à utiliser pour le cryptage, ainsi que l'incorporation d'un en-tête avec le sel.
« sel » - combiner le mot de passe avec une valeur aléatoire de 8 octets à générer à la fois la clé de chiffrement par bloc et l'IV de la phrase de passe fournie . Le sel sera ajouté au début du flux de données permettant le décryptage à régénérer à la fois la clé et IV étant donné la phrase de passe correcte. Cette méthode est compatible avec les versions actuelles d'OpenSSL.
J'ai besoin maintenant de déchiffrer le texte chiffré sur une autre plate-forme qui prend en charge que le déchiffrement CBC donne le texte chiffré, une clé littérale & IV. Pour tenter de générer la clé littérale, IV sel &, j'ai utilisé Crypt :: CBC pour générer les valeurs comme ceci:
my $crypt = new Crypt::CBC(-key => 'my secret key', -cipher => 'Blowfish');
my $out = $crypt->decrypt($ciphertext);
my $literal_key = $crypt->key();
my $iv = $crypt->iv();
my $salt = $crypt->salt();
Le décryptage ici est correct, mais j'ai été incapable d'utiliser la clé littérale généré & IV pour déchiffrer le chiffre; ce produit des déchets:
my $crypt2 = new Crypt::CBC(
-literal_key => 1,
-key => $literal_key,
-cipher => 'Blowfish',
-iv => $iv,
-header => 'none');
my $rubbish - $crypt2->decrypt($ciphertext);
Je ne peux pas fournir une clé littérale et utiliser un en-tête salée donc je suis perdu pour le prochain mouvement.
Comment puis-je déchiffrer ce texte?
EDIT: Le système cible ne fonctionne pas Perl, mais je l'ai été en mesure de générer la valeur identique dans les ordures $ ci-dessus, donc je suis sûr qu'il utilise le même algorithme (CBC, Blowfish) à déchiffrer.
Spot sur !! merci beaucoup. –
Comme une note supplémentaire dans le cas où un autre chercheur est dans le même bateau, j'avais plusieurs textes discrets à déchiffrer, tous cryptés avec le même mot de passe, donc je devais calculer la clé IV et le sel. J'ai porté le code directement à partir de la fonction [_salted_key_and_iv de Crypt :: CBC] (http://cpansearch.perl.org/src/LDS/Crypt-CBC-2.30/CBC.pm). –