Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用iaik pkcs7 EnvelopedData进行河豚加密_Java_Public Key Encryption_Blowfish_Pkcs#7_Iaik Jce - Fatal编程技术网

Java 使用iaik pkcs7 EnvelopedData进行河豚加密

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进行加密,然后使用封装数据

我正在将我的模块从bouncy castle迁移到pkcs7。我需要将blowfish、twofish和idea加密算法与iaik库的iaik.pkcs.pkcs7.EnvelopedDataStream结合使用。Idea加密算法Id存在于IAIK的AlgorithmID类中,但无法直接实现(可能是因为密钥长度可变)。Blowfish作为单独的密码类出现,但我无法找到一种方法将其与封装数据一起使用(这很重要,因为我将使用公钥加密方法)。实际上,我可以使用blowfish进行加密,然后使用封装数据和一些算法(如aes)进行包装,然后发送此消息,但在这种情况下,接收者将没有算法信息。密钥可以与recepientInfo一起传递

如果有人能给我指点路,哪怕是最基本的,我也能继续下去

提前谢谢


阿特拉雅

嗨,我想出了解决办法

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

  }