我已经使用 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/