我在java中使用AES / CBC / PKCS5Padding密码实例进行AES加密和解密 如何在java中使用上面加密的黑莓解密数据。
使用黑莓
使用AES / CBC / PKCS5Padding解密数据由于 BAPI
答案 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传输的,为了安全起见。