河豚在Java 6和Java 8之间的不同结果

问题描述 投票:1回答:1
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运行,我得到不同的输出,为什么?

java encryption blowfish
1个回答
0
投票

我发现了问题,谢谢大家的帮助,是UTF-8,在Java 6和7中,实现不同于Java 8,在Java 6和IBM 6中,帮助我的是在jdk上从openjdk 8实现了UTF_8.class。 6.如需更多帮助,请点击此处Java 8 change in UTF-8 decoding

https://gist.github.com/AndrewsK30/30ad3e63203f2ebcbbab66619ec7c064

只需使用new String(arrayByte,new CustomCharset())

© www.soinside.com 2019 - 2024. All rights reserved.