java - BouncycaSTLe RSA key 大小和填充

标签 java encryption rsa bouncycastle

我正在使用 BouncycaSTLe 的 RSA 实现。我得到一个具有以下选项的密码实例,

"RSA/ECB/PKCS1Padding"

我的问题是如何选择要使用的填充?以及我可以加密的最大数据量是多少? AFAIK RSA 有一个限制。我也找不到 ECB 代表什么?

最佳答案

在 rsa 中,加密模式被忽略。如果您有大量数据需要加密,请自行计算 block 数,下面的示例可能会对您有所帮助:

        byte[] var21;
        try {

            Cipher cp = Cipher.getInstance("RSA/ECB/PKCS1Padding", new BouncyCastleProvider());
            cp.init(mode, key);
            int blockSize = cp.getBlockSize();
            int blocksNum = (int) Math.ceil((double) data.length / (double) blockSize);
            int calcSize = blockSize;
            Object buffer = null;
            outputStream = new ByteArrayOutputStream();
            for (int i = 0; i < blocksNum; ++i) {
                if (i == blocksNum - 1) {
                    calcSize = data.length - i * blockSize;
                }

                byte[] var22 = cp.doFinal(data, i * blockSize, calcSize);

                try {
                    outputStream.write(var22);
                } catch (IOException var19) {
                    throw new GeneralSecurityException("RSA error", var19);
                }
            }
            var21 = outputStream.toByteArray();
        } finally {
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException var18) {
                    ;
                }
            }

        }

关于java - BouncycaSTLe RSA key 大小和填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11717646/

相关文章:

java - 公开 WSDL SOAP 操作的子集

java - Iterator.hasNext() 在从集合中移除() 之后变得疯狂

java - 增加表大于 growx

java - 通过随机访问文件逐行读取文件并从每行获取部分字符串

sql-server - 加密字段和全文搜索,最佳方法?

Java RSA 解密 - 错误填充异常

RSA 解密期间出现 javax.crypto.BadPaddingException

database - 如何保护存储的用户数据 : phone numbers?

c# - 使用 C# CryptoStream 的 Java 等价物加密和解密字符串

c++ - RSA可变加密长度