Ios RSA密码SHA256:如何使用?

Ios RSA密码SHA256:如何使用?,ios,swift,rsa,digital-signature,pkcs#1,Ios,Swift,Rsa,Digital Signature,Pkcs#1,我正在尝试使用swift上的SecKeyRawSign,使用SHA256withRSA对字符串进行数字签名。我可以正确地生成RSA密钥,但我不确定要将哪些数据发送到此函数。 我的目标是使用PKCS1 v1.5格式,只要要签名的私钥和内容相同,即算法中没有随机成分,就应该生成相同的签名 另外,我(想我)知道算法,我应该首先计算消息的SHA256散列,然后我应该添加一个ASN.1前缀来描述算法。最后,我应该添加PKCS1填充(0x00 0x01 0xff..0xff 0x00),以完成1024位密钥

我正在尝试使用swift上的SecKeyRawSign,使用SHA256withRSA对字符串进行数字签名。我可以正确地生成RSA密钥,但我不确定要将哪些数据发送到此函数。 我的目标是使用PKCS1 v1.5格式,只要要签名的私钥和内容相同,即算法中没有随机成分,就应该生成相同的签名

另外,我(想我)知道算法,我应该首先计算消息的SHA256散列,然后我应该添加一个ASN.1前缀来描述算法。最后,我应该添加PKCS1填充(0x00 0x01 0xff..0xff 0x00),以完成1024位密钥的128字节序列

我尝试将以下数据和填充组合传递给函数: *带有PKCS1HSA256填充的消息 *带PKCS1HSA256填充的sha256(消息) *带有PKCS1填充的算法标识符+sha256(消息) *pkcs1填充+算法标识符+带原始填充的sha256(消息)

在每种情况下,函数都不会返回错误,但每次使用相同的密钥和数据调用函数时,都会生成不同的签名。 知道算法没有随机成分,我不应该每次都得到相同的签名吗

那么,有人可以帮助我,让我知道应该向每个参数传递什么来实现我的目标吗?如何构造数据参数


谢谢。

另外请看一看,因为您使用的是填充(推荐使用),所以有一个随机组件,每次都会得到不同的结果。只要在验证签名时使用相同的填充算法,就可以了