首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi 3不加载OpenSSL生成的公钥

Delphi 3不加载OpenSSL生成的公钥
EN

Stack Overflow用户
提问于 2014-03-03 14:57:27
回答 1查看 2K关注 0票数 1

试图通过使用Lockbox 3在Delphi中加载RSA公钥,我遇到了以下错误:“(错误)公钥文件损坏、空或错误类型。”我通过OpenSSL使用以下命令生成了一对公钥和私钥:

代码语言:javascript
复制
openssl genrsa -out private.pem 2048   //generate private key
openssl rsa -pubout -in private.pem -out public.pem //generate public key

然后,在Delphi中,我使用以下代码加载libeay32.dll:

代码语言:javascript
复制
  sig: TOpenSSL_Signatory;       
  ...
  Sig.Clear;
  Sig.isLoaded := True;
  if Sig.isLoaded then ShowMessage('The OpenSSL library libeay32.dll was loaded successfully.');

总是装得很成功。然后使用以下代码加载公钥(即public.pem):

代码语言:javascript
复制
f:=TFileStream.Create('c:\keys\public.pem', fmOpenRead);
sig.LoadKeysFromStream(f, [partPublic]);
f.Free;

以上代码将导致以下错误:“(错误)公钥文件损坏、空或类型错误。”

如何解决这个问题并成功地将OpenSSL生成的公钥加载到Delphi中?

public.pem如下所示:

代码语言:javascript
复制
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz98tqhhArIOoTtO3HFDW
TcQz4EcSBIc3YejV9GPQq+gMdqO5VsmQhOfHyWAMwOVJ49w/fGib+zyIPmocwCqE
jnQ5UjpNhkO5JIDmlf5NZGI2JcuORg+4Anqgo0D4YGCY04w7Sk8dArLHK+PThPwC
uM2XqyRCpcyTsWRKcH5/G6k6OBBhj5kIeNOy+ZCLeADhNUNiEBXdHQWoMbC+x8Fk
E73KzoOg61BQ7HBMJmfK2p8Shi/wEqD1DPJK3IKkTS+KAB8LvLXdUTDHg1O6FbDn
FfSQWYXzV5MWZR7M3POyX6rjoGRFK+v3mG08S5qEPj/l/PBgNL6wI/aBNkFsYxgf
7QIDAQAB
-----END PUBLIC KEY-----
EN

回答 1

Stack Overflow用户

发布于 2014-03-05 00:07:08

方法TOpenSSL_Signatory.LoadKeysFromStream()期望密钥以.

代码语言:javascript
复制
-----END RSA PUBLIC KEY-----

该方法期望密钥为PEM (SSLeay)格式。SSLeay PEM的base64内容被标记为-----BEGIN/END RSA PUBLIC/PRIVATE KEY-----

若要生成传统PEM格式的密钥,请参见..。

不能仅仅通过重命名页眉/页脚来更改格式。实际上,必须将正确的选项传递给SSLeay,从而生成OpenSSL PEM。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22149977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档