4
A
回答
19
我确信有例子,但我没有找到它们。这里有一些提示可以帮助你开始。您需要了解如何将BC类连接在一起。首先,获取bouncycastle源代码并准备在有问题时查看它。它实际上非常可读,所以当documentation差时不要害怕检查它。例如,许多类需要一个CipherParameters
对象的实例,但文档很少指定任何更多的细节。但是,在源代码中,预期哪些实现类是显而易见的。
选择其中一个AES引擎,例如AESEngine
作为加密引擎。接下来选择一种模式; ECB很少是正确的,例如,如果您选择CBC模式,则会从AESEngine
对象中创建一个CBCBlockCipher
对象。接下来,使用此对象创建一个PaddedBufferBlockCipher
对象。默认构造函数使用PKCS7填充,它与您想要的PKCS5填充相同。现在您需要创建一个对象来保存密钥和IV。这是CipherParameters
界面。您分两步创建对象。首先,用你的密钥创建一个KeyParameter
对象。接下来,你用你的KeyParameter
对象和你的IV创建一个ParametersWithIV
对象。此对象提供给PaddedBufferBlockCipher
对象的init
方法,然后您就可以开始了。
编辑
下面是小例子:
private static byte[] cipherData(PaddedBufferedBlockCipher cipher, byte[] data)
throws Exception
{
int minSize = cipher.getOutputSize(data.length);
byte[] outBuf = new byte[minSize];
int length1 = cipher.processBytes(data, 0, data.length, outBuf, 0);
int length2 = cipher.doFinal(outBuf, length1);
int actualLength = length1 + length2;
byte[] result = new byte[actualLength];
System.arraycopy(outBuf, 0, result, 0, result.length);
return result;
}
private static byte[] decrypt(byte[] cipher, byte[] key, byte[] iv) throws Exception
{
PaddedBufferedBlockCipher aes = new PaddedBufferedBlockCipher(new CBCBlockCipher(
new AESEngine()));
CipherParameters ivAndKey = new ParametersWithIV(new KeyParameter(key), iv);
aes.init(false, ivAndKey);
return cipherData(aes, cipher);
}
private static byte[] encrypt(byte[] plain, byte[] key, byte[] iv) throws Exception
{
PaddedBufferedBlockCipher aes = new PaddedBufferedBlockCipher(new CBCBlockCipher(
new AESEngine()));
CipherParameters ivAndKey = new ParametersWithIV(new KeyParameter(key), iv);
aes.init(true, ivAndKey);
return cipherData(aes, plain);
}
相关问题
- 1. AES加密/解密
- 2. 解密AES中的AES加密字段
- 3. ESP8266 AES加密 - 解密
- 4. AES C#加密解密FIPS
- 5. AES-128加密/解密
- 6. Android AES加密和解密
- 7. AES加密C#解密Java?
- 8. AES加密+解密入门
- 9. AES加密和解密Java
- 10. AES加密和解密
- 11. android AES加密/解密
- 12. 使用AES加密/解密
- 13. AES在C加密解密
- 14. CryptoJS AES加密和Java AES解密
- 15. AES-pycrypto加密在node.js加密解密
- 16. 如何做到这一点:J2ME加密C#解密和J2ME解密C#加密?
- 17. 在J2ME中加密和解密文件
- 18. J2ME中的短信加密/解密
- 19. AES加密,解密在Java中
- 20. C中的AES加密和解密
- 21. AES加密在PHP中的OpenSSL解密
- 22. Android中的AES加密解密算法
- 23. IOS中的AES加密解密为JAVA
- 24. C#(加密)和Java(解密)之间的AES加密/解密
- 25. 解密AES密文
- 26. AES加密和解密空加字节
- 27. AES密码加密
- 28. 加密AES密钥?
- 29. AES密钥,加密
- 30. J2ME - mp3文件的加密和解密
嘿感谢您的帮助,你能为我提供了相同的一些示例代码? – Mihir 2010-11-23 07:11:36
如何在J2me中生成IV以及IV的重要性? – Mihir 2010-11-25 13:35:41
对不起,我不会为您提供加密教程。 – 2010-11-25 14:41:00