2016-06-08 1 views
1

J'utilise Blowfish pour chiffrer et déchiffrer avec le code ci-dessous. Je dois retourner une erreur s'il y a un problème avec Decryption si la ligne cryptée n'a pas le bon Salt. Tel qu'il est, le script meurt juste. MerciBlowfish Encrypt et Decrypt besoin de retourner une erreur

sub decrypt { $cipher = new Crypt::CBC($key, 'Blowfish'); 
defined $_[0] ? $cipher->decrypt_hex($_[0]) : '' 
#I NEED SOMETHING LIKE 
#if ($cipher){ $return = $cypher; } 
#else{ $return = "BadNumber"; } 
return $return; 
} 

sub encrypt { $cipher = new Crypt::CBC($key, 'Blowfish'); 
defined $_[0] ? $cipher->encrypt_hex($_[0]) : '' } 

Répondre

1

Ne pas utiliser Blowfish: oui, il est un nom propre, mais il est vétuste et supplanté par AES. Utilisez AES si la sécurité est ce que vous voulez atteindre.

Il y a beaucoup de réponses sur SO qui fournissent un exemple de code.

Si vous avez besoin de savoir si le décryptage a réussi, c'est-à-dire de la même manière que ce qui a été chiffré, utilisez un chiffrement authentifié. Voir ce SO Answer pour plus de détails sur le cryptage authentifié. Par définition, le chiffrement est simplement une fonction mathématique, il réussit toujours. C'est comme si x = y * z, x sera toujours égal à quelque chose, ce n'est peut-être pas ce que vous voulez si les valeurs incorrectes sont fournies pour y & z. Le chiffrement est similaire, vous devez fournir les données chiffrées correctes et la clé afin d'obtenir les données déchiffrées désirées. Si vous fournissez des données cryptées incorrectes et/ou une clé incorrecte, vous obtiendrez un résultat mais ce ne seront pas les données décryptées souhaitées.

S'il y a un remplissage, une erreur de remplissage peut être notée sur une clé invalide mais cette doit être ignorée et non signalée ou une attaque d'oracle de remplissage est possible.