java 6 和 java 8 之间 Blowfish 的不同结果
Different results with Blowfish between java 6 and java 8
public class Main {
public static void main(String[] args) {
String result = blowfish("123123");
System.out.println(result);
}
public static String blowfish(String source) {
final String BLOWFISH_KEY = "22ddba9832444234";
try {
Cipher cipher = Cipher.getInstance("Blowfish/ECB/PKCS5Padding");
cipher.init(
Cipher.ENCRYPT_MODE,
new SecretKeySpec(BLOWFISH_KEY.getBytes("UTF-8"), "Blowfish")
);
return new String(cipher.doFinal(source.getBytes("UTF-8")));
} catch (Exception e) {
e.printStackTrace(System.out);
return null;
}
}
}
如果我 运行 此代码使用 java 6 oracle 然后 运行 使用 java 8 openJdk 给我不同的输出,为什么?
我找到了问题,谢谢大家的帮助,是UTF-8,在java 6和7实现不同于java 8,和java 6 IBM,帮助我的是在 jdk 6 上从 openjdk 8 实施 UTF_8.class。如需更多帮助,请查看此处 .
https://gist.github.com/AndrewsK30/30ad3e63203f2ebcbbab66619ec7c064
只需使用new String(arrayByte,new CustomCharset())
public class Main {
public static void main(String[] args) {
String result = blowfish("123123");
System.out.println(result);
}
public static String blowfish(String source) {
final String BLOWFISH_KEY = "22ddba9832444234";
try {
Cipher cipher = Cipher.getInstance("Blowfish/ECB/PKCS5Padding");
cipher.init(
Cipher.ENCRYPT_MODE,
new SecretKeySpec(BLOWFISH_KEY.getBytes("UTF-8"), "Blowfish")
);
return new String(cipher.doFinal(source.getBytes("UTF-8")));
} catch (Exception e) {
e.printStackTrace(System.out);
return null;
}
}
}
如果我 运行 此代码使用 java 6 oracle 然后 运行 使用 java 8 openJdk 给我不同的输出,为什么?
我找到了问题,谢谢大家的帮助,是UTF-8,在java 6和7实现不同于java 8,和java 6 IBM,帮助我的是在 jdk 6 上从 openjdk 8 实施 UTF_8.class。如需更多帮助,请查看此处
https://gist.github.com/AndrewsK30/30ad3e63203f2ebcbbab66619ec7c064
只需使用new String(arrayByte,new CustomCharset())