我必须使用带有RSCS的SHA-1算法使用PKCS#1填充对字符串进行数字签名。我已经下载了Turbo Power Lockbox。
我拥有的私钥是PEM格式,是使用openssl创建的:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -sha1 -subj "/C=US/ST=CA/L=Mountain View/CN=www.mycompany.com" -keyout myrsakey.pem -out c:\temp\myrsacert.pem
这是它的样子:
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDFzvqdAEQn9MrSLTNua5SOxshV/8jQIf3qpfunBXa9SVdm4NJw
lY7iYpwivw7EdMlBe4FmezN9LGwyIokcUSt4KUdWmA8l4Lm5rcuDzzfmlVWP7y+j
0GKG2XCp2JwHpW4Q5WiMgcAnCMD/gbDustfz3utxQhLNBdWp2MlrEH2/rQIDAQAB
AoGAUMZmnHohWtehgxYmLG8N6QfPgx7CWAupbop9KwUWKdGrOT2RcZwBDv0JmT6/
vwWZsX3Hp5ujuPfM7uQfbUrQHrcruUg/fPY8YXcWgNfOytGpaN/XKxfy2g2Cp8mE
4yoDR2QW8jo25ZH1q1cJ3jMyX9xlXaSZm7qtaoiDydE6roECQQDxqtP2tMEZ2FmQ
2o4T5Zv7P4II2PrLq+9IP0ASCZ2VzLxm2Pk6kxjnPjZ2oHG8pUQHvMz0m8Br3BY8
X1BpXrj9AkEA0YpBH7qm/nbG6YjxKAL3PbxXUJ06T/ByLjfstfCrT3LxDeklfWJb
n/V8ahRcKPLajdbKAuWvJA5NvjeJPi34cQJAZ+vD1nUIDKsiaM3zBs9X8gTvUAqu
XmMDNJguXxNPdplh8wAevHeA3/+6v+xivHJ8/K7Nm+pWJouv7Co4k/ctqQJASV4y
TUzKmgC2xyCG5+6Z6Ujf/b7/ouva3un//PiG0yu40ZkX4l4lHM4UwQPd/QyDj/Rs
CTWo7GQBvp+tc1MfUQJBALnQnNOIIkvwIK+1J6iLZgh7GurbCPMrH8nSn8SxkfBe
qq5JWo31LQAUNDW5ntG0qHZQpx6zm2MzIlt2NgOLf4s=
-----END RSA PRIVATE KEY-----
如果我没弄错的话,我想要使用的组件是TLbRSAKey。所以我试图创建密钥对象并从文件中读取它:
var
mPrivateKey: TLbRSAKey;
begin
mPrivateKey := TLbRSAKey.Create(aks1024);
mPrivateKey.LoadFromFile('C:\temp\myrsakey.pem');
在LoadFromFile上,我收到“无效的RSA密钥”错误。我究竟做错了什么? Lockbox是否支持PEM格式的密钥?没有一个例子说明;一切似乎都是ASN格式
答案 0 :(得分:3)
我不是德尔福程序员,但我想我会尝试提供一些指示。
首先,确保为实际应用程序生成新的私钥。现在您已经与我们共享了私钥,我们不希望任何开放的安全漏洞。
其次,使用OpenSSL的DER输出生成ASN.1格式。 PEM格式只是二进制ASN.1结构的base-64编码(并添加了标记)。
您可以通过以下两种方式之一返回DER:
1)您可以解析和解码PEM包络中的base-64数据。为此,只需解码-----BEGIN/END RSA PRIVATE KEY-----
标记之间的数据。
或者,既然你正在创建一个新的密钥......;)
2)使用OpenSSL生成密钥时,可以使用-outform DER
参数。
我不确定这会对您的应用程序有效,但也许它会帮助您更进一步。
提示将PEM提示密钥转换为DER格式,在OpenSSL中使用rsa
实用程序:
openssl rsa -inform PEM -outform DER -in privkey.pem -out privkey.der