【问题标题】:blowfish encryption with iaik pkcs7 EnvelopedData使用 iaik pkcs7 EnvelopedData 进行河豚加密
【发布时间】:2013-11-28 18:42:18
【问题描述】:
我正在将我的模块从充气城堡迁移到 iaik pkcs7。我需要结合 IAIK 库的 iaik.pkcs.pkcs7.EnvelopedDataStream 使用河豚、双鱼和想法加密算法。 Idea 加密算法 ID 存在于 IAIK 的 AlgorithmID 类中,但不能直接实现(可能是因为密钥长度可变)。 Blowfish 作为单独的密码类存在,但我无法找到一种将它与封装数据一起使用的方法(这很重要,因为我将使用公钥加密方法)。我实际上可以使用河豚进行加密,然后使用封装数据和诸如 aes 之类的算法进行包装并发送,但在这种情况下,接收者将没有算法信息。密钥可以与接收信息一起传递。
如果有人可以告诉我基本的方法,我可以继续。
提前致谢
阿特拉亚
【问题讨论】:
标签:
java
public-key-encryption
blowfish
pkcs#7
iaik-jce
【解决方案1】:
您好,我想出了解决方案
ByteArrayInputStream is = new ByteArrayInputStream(message);
AlgorithmID blowfish=new AlgorithmID("1.3.6.1.4.1.3029.1.2","BLOWFISH_CBC","Blowfish/CBC/PKCS5Padding");
byte[] iv = new byte[8];
random.nextBytes(iv);
try{
KeyGenerator keyGen = KeyGenerator.getInstance("Blowfish", "IAIK");
secretKey = keyGen.generateKey();
AlgorithmParameterSpec params = new IvParameterSpec(iv);
keyGen.init(128);
secretKey = keyGen.generateKey();
iaik.pkcs.pkcs7.EncryptedContentInfoStream eci = new iaik.pkcs.pkcs7.EncryptedContentInfoStream(ObjectID.pkcs7_data, is);
eci.setupCipher(blowfish, secretKey, params);
return eci;
}catch(Exception e){
}
告诉我这种方式是否错误或可以改进或有其他方式。
谢谢