Tenir compte de la méthode suivante qui effectue le cryptage Blowfish:Pourquoi les barres obliques sont-elles dépouillées du cryptage Blowfish?
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;
}
La chaîne que je veux encode contient des barres obliques avant. Lorsque j'essaie d'encoder par exemple "http://www.google.com/Foo", pour une raison quelconque lorsque je le décode, les barres obliques sont supprimées, par ex. "http: www.google.comFoo".
ce qui pourrait être une cause possible pour cela et comment cela pourrait-il être évité?
Vous avez posté votre code de cryptage, mais votre plainte semble se trouver dans votre code de déchiffrement. –
Peut-être que je ne me suis pas fait comprendre. Il n'y a pas de code de décryptage, car j'envoie mes données cryptées sur HTTP. Cependant pour des raisons de débogage, j'utilise ce site pour décrypter ma chaîne: https://webnet77.net/cgi-bin/helpers/blowfish.pl –
Une remarque vaut mieux ajouter l'encodage à: 'value.getBytes (StandardCharsets.UTF_8)' et sur le déchiffrement 'new String (octets, StandardCharsets.UTF: _8)'. Slash (et plus) font partie de Base64 standard, Il existe une variante Base64 sûre d'URL qui utilise d'autres caractères. Je ne peux pas imaginer comment, mais peut-être que Base64 a été utilisé sur un côté. –