2016-06-08 6 views
1

Ich verwende Blowfish zum Verschlüsseln und Entschlüsseln mit dem unten stehenden Code. Ich muss einen Fehler zurückgeben, wenn es ein Problem mit Entschlüsselung gibt, wenn sagen, dass die verschlüsselte Zeile nicht das richtige Salt hat. So wie es ist, stirbt das Skript einfach. DankBlowfish Encrypt und Decrypt müssen einen Fehler zurückgeben

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]) : '' } 

Antwort

1

Verwenden Sie Blowfish nicht: ja es ist ein ordentlich Name ist, aber es ist veraltet und ersetzt durch AES. Verwenden Sie AES, wenn Sicherheit das ist, was Sie erreichen möchten.

Es gibt viele Antworten auf SO, die Beispielcode bereitstellen.

Wenn Sie wissen möchten, ob die Entschlüsselung erfolgreich war, also die gleiche wie die Verschlüsselung, verwenden Sie eine authentifizierte Verschlüsselung. Weitere Informationen zur authentifizierten Verschlüsselung finden Sie unter SO Answer.

Per Definition ist Verschlüsselung nur eine mathematische Funktion, sie ist immer erfolgreich. Es ist wie x = y * z, x wird immer gleich sein, es mag einfach nicht das sein, was Sie wollen, wenn die falschen Werte für y & z bereitgestellt werden. Die Verschlüsselung ist ähnlich, Sie müssen die korrekten verschlüsselten Daten und den Schlüssel bereitstellen, um die gewünschten entschlüsselten Daten zu erhalten. Wenn Sie falsche verschlüsselte Daten und/oder einen falschen Schlüssel angeben, erhalten Sie ein Ergebnis, aber es sind nicht die gewünschten entschlüsselten Daten.

Wenn ein Padding vorhanden ist, wird möglicherweise ein Padding-Fehler auf einem ungültigen Schlüssel bemerkt, aber dieser muss ignoriert und nicht gemeldet werden oder ein Padding-Orakel-Angriff ist möglich.