Betrachten Sie die folgende Methode, die Blowfish-Verschlüsselung ausführt:Warum werden Schrägstriche bei der Blowfish-Verschlüsselung entfernt?
import javax.crypto.Cipher;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
private static String encryptString(String value, String key)
{
String encryptedString = "";
if (value != null)
{
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "Blowfish");
try
{
Cipher cipher = Cipher.getInstance("Blowfish/ECB/PKCS#5");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
byte[] encrypted = cipher.doFinal(value.getBytes());
encryptedString = new String(Hex.encodeHex(encrypted));
}
catch (Exception e)
{
// Show error
}
}
return encryptedString;
}
Der String, die ich zu kodieren wollen enthält zukunfts zerschneidet. Wenn ich versuche, zum Beispiel "http://www.google.com/Foo" zu codieren, werden die Vorwärtsschlitze aus irgendeinem Grund, wenn ich sie decodiere, z. "http: www.google.comFoo".
Was könnte eine mögliche Ursache dafür sein und wie könnte dies verhindert werden?
Sie haben Ihren Verschlüsselungscode veröffentlicht, aber Ihre Beschwerde scheint in Ihrem Entschlüsselungscode enthalten zu sein. –
Vielleicht habe ich mich nicht klar gemacht. Es gibt keinen Entschlüsselungscode, da ich meine Daten über HTTP verschlüsselt habe. Aus Gründen des Debuggens benutze ich diese Website, um meinen String zu entschlüsseln: https://webnet77.net/cgi-bin/helpers/blowfish.pl –
Eine Bemerkung besser fügen Sie die Codierung zu: 'value.getBytes (StandardCharsets.UTF_8)' und bei der Entschlüsselung 'new String (Bytes, StandardCharsets.UTF: _8)'. Slash (und Plus) sind Teil von Standard Base64. Es gibt eine URL-sichere Base64-Variante, die andere Zeichen verwendet. Ich kann mir nicht vorstellen, wie, aber vielleicht wurde dieser Base64 auf _one_ Seite verwendet. –