Sam*_*uel 2 delphi unicode rsa delphi-2010
我正在将我的程序从Delphi 2005升级到Delphi 2010.我遇到了RSA功能问题
以下程序在D2005下运行良好,但在D2010中,结果始终为零.我已经尝试使用新版本的libeay32.dll
function ReadPrivateKey(AFileName: TFileName): pEVP_PKEY;
var
keyfile: pBIO;
a : pEVP_PKEY;
begin
a := nil;
keyfile := BIO_new(BIO_s_file());
BIO_read_filename(keyfile, PAnsiChar(AFilename));
result := PEM_read_bio_PrivateKey(keyfile, a, nil, nil);
if result = nil then
begin
raise Exception.Create('Não foi possível ler a chave privada.');
end;
BIO_free(keyfile);
end;
Run Code Online (Sandbox Code Playgroud)
有人有这个问题吗?谢谢山姆
您应该收到警告W1044"对PAnsiChar的TFileName的可疑类型转换".
你是类型转换TFileName(这是stringDelphi 2010 的别名UnicodeString),直接到PAnsiChar.我猜这已经BIO_read_filename失败了; 你不检查返回的值.根据文档,它需要UTF8编码的字符串,所以尝试使用UTF8Encode对其进行编码:
BIO_read_filename(keyfile, PAnsiChar(UTF8Encode(AFileName)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |