使用黑莓手机使用AES / CBC / PKCS5Padding解密数据

时间:2009-05-23 10:08:38

标签: java blackberry encryption

我在java中使用AES / CBC / PKCS5Padding密码实例进行AES加密和解密 如何在java中使用上面加密的黑莓解密数据。

使用黑莓

使用AES / CBC / PKCS5Padding解密数据

由于 BAPI

3 个答案:

答案 0 :(得分:5)

我建议使用BlackBerry API(Bouncy Castle可以使用,但为什么会让事情变得复杂?)。

使用net.rim.crypto包 - 您正在使用所有对称加密,因此您只需要在设备上运行标准RIM signing keys(20美元和2-3天即可获得) - 在与此同时,你可以用模拟器做任何事情。

基本上你需要创建一个PKCS5UnformatterEngine,它包装一个封装AESDecryptorEngine的CBCDecryptorEngine。可能会将所有内容都包装在BlockDecryptor中,以便您可以像在InputStream中一样处理。喜欢的东西(自从我这样做以来已经有一段时间了,所以它可能不会像书面那样100%工作):

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

答案 1 :(得分:2)

我认为Bouncy Castle Library支持这一点。他们也提供了一些简短的教程。

答案 2 :(得分:0)

Bouncy castle有一个很棒的图书馆。主要问题是如何以安全的方式获得密钥。我发现.NET和Java以不兼容的方式序列化密钥,因此为了便于密钥传输,我最终使用了Bouncy Castle,因为它是使用RSA传输的,为了安全起见。