使用LockBox读取PEM格式的私钥

时间:2009-11-23 02:11:33

标签: delphi cryptography openssl

我必须使用带有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格式

1 个答案:

答案 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