gpt4 book ai didi

java-me - J2ME 中使用 BouncycaSTLe 示例的 AES 加密/解密

转载 作者:行者123 更新时间:2023-12-03 18:18:20 28 4
gpt4 key购买 nike

我想使用带有充气城堡的 AES 算法在 J2ME 中加密和解密数据
任何人都可以给我示例代码吗

我想将 ECB 与 PKCS5Padding 一起使用

提前致谢。

最佳答案

我确定那里有例子,但我还没有找到。这里有一些提示可以帮助您入门。您需要学习如何将 BC 类(class)连接在一起。首先,获取 bouncycaSTLe 源代码,并准备在您有问题时查看它。它实际上非常易读,所以当 documentation 出现时不要害怕检查它。很穷。例如,许多类想要一个 CipherParameters 的实例。对象,但文档很少指定更多细节。但是,在源代码中,很明显需要哪些实现类。

选择其中一种 AES 引擎,例如 AESEngine ,作为加密引擎。接下来选择一种模式; ECB 很少是正确的,例如,如果您选择 CBC 模式,则创建一个 CBCBlockCipher来自您的对象 AESEngine目的。接下来,使用这个对象创建一个 PaddedBufferBlockCipher目的。默认构造函数使用 PKCS7 填充,它与您想要的 PKCS5 填充相同。现在您需要创建一个对象来保存 key 和 IV。这是CipherParameters界面。您分两步创建对象。首先,您创建一个 KeyParameter用你的 key 对象。接下来,您创建一个 ParametersWithIV对象与您的 KeyParameter对象和您的 IV。此对象提供给 init PaddedBufferBlockCipher的方法对象,然后你就可以开始了。

编辑

这是一个小例子:

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);
}

关于java-me - J2ME 中使用 BouncycaSTLe 示例的 AES 加密/解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4243650/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com