我必须根据给定的数据创建签名,但问题是数据的长度是密钥长度。在JAVA中所有RSA签名者的实现允许放置最大数据。密钥长度减去一个长度。如何为长度为密钥长度的数据创建签名?算法是没有填充和没有摘要的基本RSA。
答案 0 :(得分:0)
首先,请不要在没有填充的情况下使用RSA - 这是一个糟糕的主意并且 diminishes the security of your system 。
如果您需要签署与密钥长度(或更大)相等的数据,我担心您需要使用摘要。这里没有真正的选择。我不知道你为什么不想使用摘要。
答案 1 :(得分:0)
RSA只能将数据加密到最大密钥大小(2048位= 256字节)减去填充/标头数据(对于PKCS#1 v1.5填充为11字节)。
因此,通常无法直接使用RSA加密文件。 RSA也并非用于此目的。如果要加密更多数据,可以使用类似以下内容的方法:
Generate a 256-bit random keystring K
Encrypt your data with AES-CBC with K
Encrypt K with RSA
Send both to the other side