0

我正在将我的模块从充气城堡迁移到iaik pkcs7。我需要结合 IAIK 库的 iaik.pkcs.pkcs7.EnvelopedDataStream 使用河豚、双鱼和想法加密算法。Idea 加密算法 ID 存在于 IAIK 的 AlgorithmID 类中,但不能直接实现(可能是因为密钥长度可变)。Blowfish 作为单独的密码类存在,但我无法找到一种将它与封装数据一起使用的方法(这很重要,因为我将使用公钥加密方法)。我实际上可以使用河豚进行加密,然后使用封装数据和诸如 aes 之类的算法进行包装并发送,但在这种情况下,接收者将没有算法信息。密钥可以与接收信息一起传递。

如果有人可以向我展示基本的方式,我可能会继续。

提前致谢

阿特拉亚

4

1 回答 1

0

嗨,我想出了解决方案

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){

  }

告诉我这种方式是否错误或可以改进,或者有另一种方式。

谢谢

于 2013-11-19T06:52:03.927 回答