Java me J2ME中带有Bouncycastle示例的AES加密/解密

Java me J2ME中带有Bouncycastle示例的AES加密/解密,java-me,encryption,bouncycastle,aes,Java Me,Encryption,Bouncycastle,Aes,我想使用带有bouncy castle的AES算法在J2ME中加密和解密数据 有人能给我这个的示例代码吗 我想将ECB与PKCS5P一起使用 提前谢谢 我肯定有一些例子,但我还没有找到。以下是一些帮助您入门的提示。您需要学习如何将BC类连接在一起。首先,获取bouncycastle源代码,并准备在有问题时查看它。它实际上可读性很强,所以当性能较差时,不要害怕检查它。例如,许多类需要一个CipherParameters对象的实例,但文档很少指定更多细节。然而,在源代码中,很明显需要哪些实现类 选择

我想使用带有bouncy castle的AES算法在J2ME中加密和解密数据 有人能给我这个的示例代码吗

我想将ECB与PKCS5P一起使用


提前谢谢

我肯定有一些例子,但我还没有找到。以下是一些帮助您入门的提示。您需要学习如何将BC类连接在一起。首先,获取bouncycastle源代码,并准备在有问题时查看它。它实际上可读性很强,所以当性能较差时,不要害怕检查它。例如,许多类需要一个
CipherParameters
对象的实例,但文档很少指定更多细节。然而,在源代码中,很明显需要哪些实现类

选择一个AES引擎,例如
AESENGE
,作为加密引擎。接下来选择一种模式;ECB很少是正确的,因此,例如,如果您选择CBC模式,则从
AESENGE
对象创建
CBCBCBlockCipher
对象。接下来,使用此对象创建一个
PaddedBufferBlockCipher
对象。默认构造函数使用与所需的PKCS5填充相同的PKCS7填充。现在需要创建一个对象来保存密钥和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);
}

嘿,谢谢你的帮助,你能为我提供一些相同的示例代码吗?如何在J2me中生成IV,以及IV的重要性是什么?这里有一个解释:即使参加聚会很晚,像我这样的人还是从谷歌搜索来的。初始化向量(iv)通常由AES用来帮助更好地加密的随机数填充。只要用随机数填充它,您可能需要重新使用相同的向量来decrypt@Igal:
encrypted=新字符串(enc)不正确,将丢失信息。