java - 获取 RSA 密码的 block 大小

标签 java algorithm encryption cryptography

我已经使用 RSA 算法创建了一个 Cipher,但是当我想要使用 block 大小时我遇到了问题。 Cipher 使用以下代码段声明:

        encrypt=Cipher.getInstance("RSA");
         encrypt.init(Cipher.ENCRYPT_MODE,myPublicKey);

当我尝试使用 encrypt.getBlockSize() 获取 block 大小时,我得到“0”,根据 Javadoc,这是所使用的算法不是 block 密码时的答案,RSA 算法不是这种情况。

在 Debug模式下,如果我深入研究Cipher,我可以在“spi”成员中看到一个缓冲区存在,而且它的大小似乎与实际 block 大小相对应。

有人知道为什么 getBlockSize() 返回“0”而不是 spi 的缓冲区大小吗?

最佳答案

RSA 不被视为分组密码。 block 密码是对称的,使用相同的 key 进行加密和解密。与 AES 不同,无论 key 大小如何, block 大小都是固定的,RSA 加密或签名操作的输出将根据 key 大小而变化。

如果你想知道RSA密文的大小,examine the modulus要使用的 key 。

关于java - 获取 RSA 密码的 block 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37119569/

相关文章:

java - 是否有任何第三方 jar 文件可用于 java6 数学评估?

python - 在 Python 中实现深度优先树迭代器

mysql - 使用 AES_ENCRYPT 在 Eloquent 模型中加密

java - 带空字段的 ArrayList

java - 为什么我无法将编码后的密码与spring security匹配?

java - 哪个 Swing 组件适合此设计?

algorithm - 如何将 Levenshtein 距离应用于一组目标字符串?

c++ - 将图像转换为有限大小的调色板的好算法是什么

python - 如何在 Python 中进行 PGP(生成 key 、加密/解密)

c++ - 内存中无符号字符加密