1
String key = "my_own_key_which_should_be_quite_long";
byte[] keyData = key.getBytes();
SecretKeySpec myKey = new SecretKeySpec(keyData, "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, myKey);
String input = "string to encrypt";
try {
byte[] encrypted = cipher.doFinal(input.getBytes());
System.out.println(new String(encrypted));
} catch (Exception ex) {
ex.printStackTrace();
}
javax.crypto.IllegalBlockSizeException: 7 octets de queue est lancée par la méthode doFinal. Quel est le problème? Quel est le plus intéressant - peu importe combien de temps la chaîne de clé est l'exception est toujours la même - 7 octets de fin.javax.crypto.IllegalBlockSizeException lors de l'utilisation Blowfish en java
Mis à part le problème de la taille des blocs, vous * vraiment * ne doit pas utiliser l'encodage par défaut de plate-forme pour convertir la chaîne en un tableau d'octets, et vous ne devriez pas essayer pour convertir les données binaires opaques (le tableau d'octets chiffrés) en une chaîne comme celle-là - utilisez la base 64. –
duplication possible de [Comment résoudre javax.crypto.IllegalBlockSizeException: les données ne sont pas alignées sur la taille du bloc] (http://stackoverflow.com/ questions/4062015/comment-résoudre-javax-crypto-illegalblocksizeexception-data-not-block-size-aligné) –
OMFG, Jon Skeet a commenté ma question, maintenant ma vie est remplie de sens – Sergey