Comment décrypter à l'aide de l'algorithme Blowfish en php?
Je suis censé écrire un script PHP pour décrypter Blowfish des données chiffrées.
Les données que je reçois pour le décryptage est crypté par une autre application (je n'ai pas accès).
Les données décrypte très bien quand suis le vérifier à l'aide d'un script javascript (blowfish.js).
Comment déchiffrer les données en php?
J'ai essayé le mcrypt
fonction en PHP. Le code fonctionne très bien si je chiffrer et déchiffrer à l'aide du même code. Si je décode un code crypté (dans une autre application), il donne de la camelote.
Aucune idée sur ce mode de jeu.
Quelqu'un peut-il suggérer sur le code ci-dessous ou PHP BlowFish code sans l'aide de mcrypt?
<?php
class Encryption
{
static $cypher = 'blowfish';
static $mode = 'cfb';
static $key = '12345678';
public function encrypt($plaintext)
{
$td = mcrypt_module_open(self::$cypher, '', self::$mode, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, self::$key, $iv);
$crypttext = mcrypt_generic($td, $plaintext);
mcrypt_generic_deinit($td);
return $iv.$crypttext;
}
public function decrypt($crypttext)
{
$plaintext = "";
$td = mcrypt_module_open(self::$cypher, '', self::$mode, '');
$ivsize = mcrypt_enc_get_iv_size($td);
$iv = substr($crypttext, 0, $ivsize);
$crypttext = substr($crypttext, $ivsize);
if ($iv)
{
mcrypt_generic_init($td, self::$key, $iv);
$plaintext = mdecrypt_generic($td, $crypttext);
}
return $plaintext;
}
}
$encrypted_text = Encryption::encrypt('this text is unencrypted');
echo "ENCRY=".$encrypted_text;echo "<br/>";
////I am using this part(decryption) coz data already encryption
//Encrypted text from app
$encrypted_text = '29636E7ADA7081E7F5D73121C45E20D5';
//Decrypt text
$decrypted_text = Encryption::decrypt($encrypted_text);
echo "ENCRY=".$decrypted_text;echo "<br/>";
?>
OriginalL'auteur Sangam254 | 2011-04-07
Vous devez vous connecter pour publier un commentaire.
La
$iv
vous utilisez lors du déchiffrement doit être le même que le Vecteur D'Initialisation utilisé pour le cryptage des données. Vos propres fonctions de transfert de cette information en ajoutant le IV du texte chiffré (return $iv.$crypttext;
), mais l'autre application ne peut pas le faire.Vous avez besoin de savoir ce que IV l'application d'autres utilisations, et le passer à votre propre code. Depuis le
decrypt
fonction lit la IV à partir du début du texte chiffré, vous pouvez simplement ajouter.Aussi, vous pouvez tester un peu en chiffrant le même texte avec votre
encrypt
fonction et avec l'autre application. Si les sorties n'ont pas la même longueur (de votre propre est le plus grand), puis l'application n'est pas y compris la IV à l'intérieur du texte chiffré, et vous devez obtenir cette information dans un autre manière.Et bien sûr, le mode de chiffrement utilisé (BFC) doit être la même entre votre code et l'application d'autres.
OriginalL'auteur Jon
Il y a une belle, facile à mettre en œuvre la solution ici:
http://www.codewalkers.com: Chiffrer et Déchiffrer à l'aide Blowfish
OriginalL'auteur Aidan
Il y a une Bibliothèque PEAR pour la création de blowfish encyptions qui vous permettent de choisir la météo à utiliser MCRYPT Libs, ou purement natives de PHP:
vous pouvez consulter la Bibliothèque ici: Crypt_Blowfish 1.1.0RC2
Sélectionnez l'PHP.php fichier va vous montrer le code source pour ce faire codées en dur dans natives de PHP.
OriginalL'auteur RobertPitt