2013-11-15 21 views
0

我將我的模塊從彈性城堡遷移到iaik pkcs7。我需要結合IAIK庫的iaik.pkcs.pkcs7.EnvelopedDataStream使用blowfish,twofish和想法加密算法。 Idea加密算法Id存在於IAIK的AlgorithmID類中,但不能直接實現(可能是因爲可變密鑰長度)。 Blowfish作爲單獨的密碼類出現,但我無法想出一種將其與包絡數據一起使用的方式(這一點很重要,因爲我將使用公鑰加密方法)。我實際上可以使用blowfish進行加密,然後使用包絡數據和一些算法(如aes)進行包裝併發送,但接收方在這種情況下將不具有算法信息。密鑰可以與recepientInfo一起傳遞。帶iaik pkcs7的blowfish加密EnvelopedData

如果任何人都可以告訴我基本的方式,我可以繼續。

預先感謝

Atraya

回答

0

您好我想出了溶液

ByteArrayInputStream的是=新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){ 

    } 

告訴我,如果這種方式是錯誤的,或可以改善或有另一種方式做到這一點。

謝謝