Java 长度为密钥长度的数据的RSA签名

Java 长度为密钥长度的数据的RSA签名,java,key,rsa,Java,Key,Rsa,我必须根据给定的数据创建签名,但问题是数据的长度与密钥长度相同。JAVA中RSA签名者的所有实现都允许将最大密钥长度减去一个长度的数据放入。如何为长度为密钥长度的数据创建签名?算法是没有填充和摘要的基本RSA。首先,请不要使用没有填充的RSA-这是一个糟糕的想法, 如果需要对大小等于密钥长度(或更大)的数据进行签名,恐怕需要使用摘要。这里真的没有选择。我不知道您为什么不想使用摘要。RSA只能将数据加密到密钥大小(2048位=256字节)减去填充/头数据(PKCS#1 v1.5填充为11字节)的最

我必须根据给定的数据创建签名,但问题是数据的长度与密钥长度相同。JAVA中RSA签名者的所有实现都允许将最大密钥长度减去一个长度的数据放入。如何为长度为密钥长度的数据创建签名?算法是没有填充和摘要的基本RSA。

首先,请不要使用没有填充的RSA-这是一个糟糕的想法,


如果需要对大小等于密钥长度(或更大)的数据进行签名,恐怕需要使用摘要。这里真的没有选择。我不知道您为什么不想使用摘要。

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

好的,谢谢你的回复。问题是我编写了PKCS11库,而且我还必须在没有填充的情况下实现RSA。我在PKCS11的文档中发现了一些东西——当一些应用程序使用RSA无填充算法调用符号函数时,数据的长度等于密钥的长度,并且第一个字节为0,那么我应该使用文档中定义的特殊算法来获取加密数据。