我正在努力让加密程序运行,因为我正在尝试使用 Twofish。有没有办法在不同的包中使用 cipherinputstream 或 cipheroutputstream 和算法?或将 Twofish 算法放入 java.crypto.cipher 的方法?或者有更好的方法吗?
问问题
635 次
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 回答