与锁箱子的数字式标志钥匙

时间:2009-11-23 13:17:27

标签: delphi cryptography

我必须使用带有RSCS的SHA-1算法使用PKCS#1填充对字符串进行数字签名。我已经下载了Turbo Power Lockbox以与Delphi编程语言一起使用。

previous question中我学会了如何将私钥从PEM格式转换为DER格式(如果我理解正确的是ASN.1格式并与Lockbox一起使用)。

我在SignString的以下代码中遇到“除以零”错误:

uses LbRSA,lbAsym,LbDSA;

procedure TForm1.Button1Click(sender: TObject);
var
  mPrivateKey: TLbRSAKey;
  mLbRSASSA : TLbRSASSA;
begin
  mPrivateKey := TLbRSAKey.Create(aks1024);
  mPrivateKey.LoadFromFile('C:\temp\myrsakey.der');
  mLbRSASSA := TLbRSASSA.create(nil);
  mLbRSASSA.HashMethod := hmSHA1;
  mLbRSASSA.PrivateKey.Assign(mprivateKey);
  mLbRSASSA.SignString('sign this message');

以下是我如何生成c:\ temp \ myrsakey.der:

  

c:\ openssl \ bin \ 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

使用以下命令从PEM转换为DER:

  

c:\ openssl \ bin \ openssl rsa -inform PEM -outform DER -in c:\ temp \ myrsakey.pem -out c:\ temp \ myrsakey.der

任何想法为什么我得到零误差的划分?

1 个答案:

答案 0 :(得分:2)

您使用OpenSSL生成的私钥与Lockbox所需的格式不同 我还没有弄清楚你需要OpenSSL生成一个Lockbox兼容密钥所需要的咒语(即使OpenSSL能够)但是根据你之前的问题判断你已经有一个密钥/证书所以我的第一个想法是使用Lockbox生成密钥可能没用:

  mLbRSASSA := TLbRSASSA.create(nil);
  mLbRSASSA.KeySize := aks1024;
  mLbRSASSA.GenerateKeyPair;
  mLbRSASSA.PrivateKey.StoreToFile(mykeyname);

然而,或许更好的建议是你可以完全避免使用Lockbox。我已经停止使用Lockbox,现在使用Marco Ferrante的作品直接使用OpenSSL库/ dll进行签名等: http://www.disi.unige.it/person/FerranteM/delphiopenssl/
那里有很好的例子,一旦你把它与OpenSSL文档的阅读结合起来就会有意义。