Openssl 从其模和指数创建rsa公钥

Openssl 从其模和指数创建rsa公钥,openssl,rsa,Openssl,Rsa,我想验证RSA签名。我有数据要验证,签名和一个以模和指数形式存在的公钥。我想使用openssl进行验证。可能吗?我知道我可以使用openssl rsautl-verify-in sig-inkey key.pem,但我不知道如何(使用openssl)创建一个只有模数和指数的公钥 也许还有其他方法可以检查这个签名(除了编写一些程序)?检查手册页应该会给你以下建议 # generate private key openssl genrsa > key.priv # use it to

我想验证RSA签名。我有数据要验证,签名和一个以模和指数形式存在的公钥。我想使用openssl进行验证。可能吗?我知道我可以使用
openssl rsautl-verify-in sig-inkey key.pem
,但我不知道如何(使用openssl)创建一个只有模数和指数的公钥


也许还有其他方法可以检查这个签名(除了编写一些程序)?

检查手册页应该会给你以下建议

 # generate private key
 openssl genrsa > key.priv

 # use it to sign something
 echo "Dirk should be given $10" | openssl rsautl -inkey key.priv -sign > msg.sig

 # create a pub key (modules, exp) from the private key
 openssl rsa -pubout < key.priv > key.pub

 # use that to verify the signature.
 openssl rsautl -in msg.sig -verify -inkey key.pub -pubin
#生成私钥
openssl genrsa>key.priv
#用它来签名
echo“应该给Dirk 10美元”| openssl rsautl-inkey key.priv-sign>msg.sig
#从私钥创建发布密钥(modules,exp)
openssl rsa-puboutkey.pub
#用它来验证签名。
openssl rsautl-in msg.sig-verify-inkey key.pub-pubin
所有这些都假设您需要原始密钥。如果我理解您在右下方的评论-您似乎没有正常格式的modules/exp。因此,您首先必须将其打包到ASN.1中 以便与常用工具一起使用


您必须为此编写一些c/java/etc代码。一个简单的方法是使用openssl库;并填写RSA*结构。

要生成PEM格式的RSA公钥,以便与
openssl
一起使用,您可以执行以下步骤

创建ASN1定义文件

修改以下模板以包含模数和指数

# Start with a SEQUENCE
asn1=SEQUENCE:pubkeyinfo

# pubkeyinfo contains an algorithm identifier and the public key wrapped
# in a BIT STRING
[pubkeyinfo]
algorithm=SEQUENCE:rsa_alg
pubkey=BITWRAP,SEQUENCE:rsapubkey

# algorithm ID for RSA is just an OID and a NULL
[rsa_alg]
algorithm=OID:rsaEncryption
parameter=NULL

# Actual public key: modulus and exponent
[rsapubkey]
n=INTEGER:0x%%MODULUS%%

e=INTEGER:0x%%EXPONENT%%
您可能还希望使用sed编写脚本,而不是编辑

sed -i "s/%%MODULUS%%/$(xxd -ps -c 256 mymodulus.bin)/" def.asn1
注意,
-c256
应根据密钥长度(以字节为单位)进行选择

可以对指数使用类似的命令

生成您的RSA密钥

使用以下openssl命令。这将为您提供一个DER编码的RSA密钥

openssl asn1parse -genconf def.asn1 -out pubkey.der -noout
然后将其转换为PEM密钥

openssl rsa -in pubkey.der -inform der -pubin -out pubkey.pem
使用您的密钥验证


你可以使用
openssl dgst-verify
openssl rsautl-verify

“……除了编写一些程序……”如果你读了这篇文章,你就会知道这就是stackoverflow的作用。格雷格:不是这样:)我有一个程序可以这样做,但我的客户声称它不能正常工作。为了证明他是错的,我想向他展示一下,例如openssl(他可以信任)的行为和我的程序一样。你想从给定的模和指数得到RSA*结构吗?我不知道它是如何解决我的问题的。我只有两个数字:模数和指数。我想创建一个文件key.pub,其中包含一个基于这些数字创建的公钥。没有别的了。我很久以前问过这个问题,现在仍然不知道该怎么做。假设您没有正常BER包装中没有的模块和指数-您将不得不编写一些ASN.1包装来包装它。