使用黑莓解密数据的AES/CBC/PKCS5Padding方法

5

我正在使用Java中的AES/CBC/PKCS5Padding密钥实例进行AES加密和解密。

如何在Java中使用黑莓加密的数据进行解密,其中使用了上述方法。

使用AES/CBC/PKCS5Padding及黑莓来解密数据。

谢谢,Bapi

3个回答

5

我建议使用黑莓API(Bouncy Castle也可以,但为什么要把事情弄复杂呢?)。

使用net.rim.crypto包-你正在使用所有对称加密,因此您只需要标准的RIM签名密钥即可在设备上运行(需要$20和2-3天才能获取)-同时,您可以使用模拟器完成所有操作。

基本上,您将想创建一个PKCS5UnformatterEngine,该引擎包装了一个CBCDecryptorEngine,该引擎又包装了一个AESDecryptorEngine。可能会用BlockDecryptor将其全部包装起来,这样您就可以将其视为InputStream。大致如下(距离我上次做这个已经有一段时间了,所以可能无法百分百按照以下内容工作):

InputStream encryptedInput;  // if you have a byte[] of data, use a ByteArrayInputStream
AESKey key = new AESKey(<your key data as a byte[]>) 
InitializationVector iv = new InitializationVector(<your iv data as a byte[]>) // of course you need to know your IV since you're doing CBC encryption

BlockDecryptor decryptor = new BlockDecryptor(
   new PKCS5UnformatterEngine(
      new CBCDecryptorEngine(
         new AESDecryptorEngine(key),
         iv
      )
   )
);

// then decryptor acts as an InputStream which gives you your decrypted, unpacked data

decryptor.read(buffer); // buffer will contain decrypted, unpacked data

那是比我的更好的答案,但为了辩护,我在看到你的回答之前没有看到黑莓标签。 :-) - wds

2

0
Bouncy Castle拥有一个出色的库来完成这个任务。主要问题在于如何以安全的方式将密钥传输到那里。我发现.NET和Java以不兼容的方式序列化密钥,因此我最终使用了Bouncy Castle来促进密钥传输,因为它是使用RSA进行传输的,出于安全考虑。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接