DELPHI 支付宝支付签名问题 5C

rsa_sign报libeay32.dll内存错误,我的indy版本是10.2.3,请问大神怎么解决呢

2个回答

空指针吧,看看具体的代码贴出来图片说明

function TForm1.Sign(filename, msg: String): string;
var
ctx: EVP_MD_CTX;
buf_in: PChar;
m_len, outl: cardinal;
pkey: PEVP_PKEY;
m, buf_out: array [0 .. 1024] of Char;
p: array [0 .. 255] of Char;
i: Integer;
begin
buf_out := '';
if filename = '' then
begin
Result := '';
Exit;
end;
// ZeroMemory(@m, SizeOf(m));
// ZeroMemory(@buf_out, SizeOf(buf_out));
pkey := LoadPrivateKey(filename);
buf_in := PChar(msg);
EVP_MD_CTX_init(@ctx); // 初始化
EVP_SignInit(@ctx, EVP_sha1()); //将需要使用的摘要算法存入ctxl中

EVP_SignUpdate(@ctx, buf_in, Length(buf_in));////存入编码值

EVP_DigestFinal(@ctx, m, m_len);//求取编码的长度为m_len摘要值存入m中
RSA_sign(EVP_sha1()._type, m, m_len, buf_out, outl, pkey.pkey.rsa);//64为SHA1的NID

EVP_MD_CTX_cleanup(@ctx);
Result := EncodeString(StrPas(buf_out));
end;

在RSA_Sign处报错图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!