Java 使用iaik pkcs7 EnvelopedData进行河豚加密
我正在将我的模块从bouncy castle迁移到pkcs7。我需要将blowfish、twofish和idea加密算法与iaik库的iaik.pkcs.pkcs7.EnvelopedDataStream结合使用。Idea加密算法Id存在于IAIK的AlgorithmID类中,但无法直接实现(可能是因为密钥长度可变)。Blowfish作为单独的密码类出现,但我无法找到一种方法将其与封装数据一起使用(这很重要,因为我将使用公钥加密方法)。实际上,我可以使用blowfish进行加密,然后使用封装数据和一些算法(如aes)进行包装,然后发送此消息,但在这种情况下,接收者将没有算法信息。密钥可以与recepientInfo一起传递 如果有人能给我指点路,哪怕是最基本的,我也能继续下去 提前谢谢Java 使用iaik pkcs7 EnvelopedData进行河豚加密,java,public-key-encryption,blowfish,pkcs#7,iaik-jce,Java,Public Key Encryption,Blowfish,Pkcs#7,Iaik Jce,我正在将我的模块从bouncy castle迁移到pkcs7。我需要将blowfish、twofish和idea加密算法与iaik库的iaik.pkcs.pkcs7.EnvelopedDataStream结合使用。Idea加密算法Id存在于IAIK的AlgorithmID类中,但无法直接实现(可能是因为密钥长度可变)。Blowfish作为单独的密码类出现,但我无法找到一种方法将其与封装数据一起使用(这很重要,因为我将使用公钥加密方法)。实际上,我可以使用blowfish进行加密,然后使用封装数据
阿特拉雅嗨,我想出了解决办法 ByteArrayInputStream is=新的ByteArrayInputStream(消息) 告诉我这种方法是错误的还是可以改进的,或者有其他方法 谢谢
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){
}