我在java上手动实现RSA(是的,我知道不是最好的主意,但它是出于大学目的)。我的算法对于小文本工作得很好,但是当考虑大文本时算法会因为比特数优于我的密钥而中断。
我正在研究实现填充方案的可能性,以便将我的纯文本分成小文本,然后加密它们。
有关于如何填充的建议吗?
提前致谢。
答案 0 :(得分:2)
对不起,我正在写一个包含与divanov的答案基本相同的信息的答案,但编辑添加我认为重要的所有小细节将完全重写答案。
通常,您不希望直接对数据进行非对称加密,而是使用RSA交换用于对称加密数据的对称密钥。你可以这样做(想法来自"Cryptography Engineering" by Ferguson, Kohno and Schneier,这本书我可以全心推荐):
答案 1 :(得分:0)
当需要加密比非对称密钥更长的纯文本时,通常生成随机对称密码块密钥,例如,AES128然后它用于加密数据。在进程结束时,对称密钥使用RSA公钥加密,并与密文一起保存。
解密包括使用私有RSA密钥恢复对称密钥,然后使用前者解密长消息。
这样做的原因之一是RSA比例如AES慢得多。另一个是分组密码对消息的大小没有限制。