0

我正在努力让加密程序运行,因为我正在尝试使用 Twofish。有没有办法在不同的包中使用 cipherinputstream 或 cipheroutputstream 和算法?或将 Twofish 算法放入 java.crypto.cipher 的方法?或者有更好的方法吗?

4

1 回答 1

0

Java 本身没有 twofish 实现,因此您需要使用具有一个的加密 (JCA/JCE) 提供程序,例如 Bouncy Castle:

public class TwofishInStreams {

    public static void main(String[] args) throws Exception {
        Security.addProvider(new BouncyCastleProvider());
        Cipher twofish = Cipher.getInstance("twofish/cbc/pkcs5padding");
        SecretKey twoFishKey = new SecretKeySpec(new byte[16], "twofish");
        IvParameterSpec iv = new IvParameterSpec(new byte[16]);
        twofish.init(Cipher.ENCRYPT_MODE, twoFishKey, iv);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try (CipherOutputStream cos = new CipherOutputStream(baos, twofish)) {
            cos.write("owlstead".getBytes(StandardCharsets.UTF_8));
        }
        System.out.println(Hex.toHexString(baos.toByteArray()));
    }
}

请阅读有关如何使用提供程序的 Bouncy Castle 文档,并且不要忘记从 Oracle 安装无限制的加密文件。


显然这只是一个例子:你不应该像这样使用零字节密钥或零字节 IV。

于 2015-07-24T14:36:10.403 回答