gpt4 book ai didi

java - 如何使用 RSA 公钥加密 java.util.Properties 对象(可以是任意大小)?

转载 作者:行者123 更新时间:2023-12-02 19:42:22 24 4
gpt4 key购买 nike

这是我当前正在使用的代码。它使用 BouncyCaSTLe 提供程序。

static
{
Security.addProvider(new BouncyCastleProvider());
}

protected String encrypt(byte[] keyData, byte[] data) throws Exception {
X509EncodedKeySpec keyspec = new X509EncodedKeySpec(keyData);
KeyFactory kf = KeyFactory.getInstance("RSA", "BC");
PublicKey pk = kf.generatePublic(keyspec);
Cipher rsa = Cipher.getInstance("RSA/None/OAEPWithSHA1AndMGF1Padding", "BC");
rsa.init(Cipher.ENCRYPT_MODE, pk);
byte[] output = rsa.doFinal(data);
String result = base64EncodeBytes(output);
return result;
}

我目前正在获取

 java.lang.ArrayIndexOutOfBoundsException: too much data for RSA block
at org.bouncycastle.jce.provider.JCERSACipher.engineDoFinal(Unknown Source)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at Encryption.encrypt(RSAToken.java:60)

最佳答案

使用 RSA 加密大量数据并不是一个好的做法。

加密协议(protocol)采用的方法是生成对称 key ,用它来加密数据,然后使用 RSA 对该对称 key 进行加密。

这就是 PGP 和 S/MIME 的工作原理。它还可以轻松地允许多个读者解密数据——通过加密每个预期接收者的对称 key ,而不是加密每个接收者的整个数据。

关于java - 如何使用 RSA 公钥加密 java.util.Properties 对象(可以是任意大小)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916061/

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