中易网

哪位高手那里有openssl md5withRSA 签名的delphi相关资料或代码

答案:1  悬赏:0  
解决时间 2021-01-29 16:27
哪位高手那里有openssl md5withRSA 签名的delphi相关资料或代码
最佳答案
第一步:下载indy9 支持ssllib 的2个DLL。CSDN有!
第二步:网上百度libeay32.pas
第三步:修改libeay32.pas,自己添加 procedure EVP_MD_CTX_init(ctx: pEVP_MD_CTX); cdecl;
procedure EVP_MD_CTX_cleanup(ctx: pEVP_MD_CTX); cdecl;
function RSA_sign(len:integer;_m:PCharacter;_m_length:integer; from: PCharacter; _to: pointer; rsa: pRSA): integer; cdecl;
第四步:就是DELPHI代码了:
function LoadPrivateKey(filename:string ): PEVP_PKEY;
var
bp : PBIO ;
A,pkey :PEVP_PKEY ;
begin
a:=nil;
bp := BIO_new(BIO_s_file()) ;
BIO_read_filename(bp, PChar(filename));
pkey := PEM_read_bio_PrivateKey(bp, a, nil,NIL);
BIO_free(bp);
Result:= pkey;
end;

function 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;
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)) ;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何电话催账
wow每天都该做什么
刚入手的龙鱼,对龙鱼不了解,求大神辨别
被共同是什么意思
银行考哪些证书最有价值!!!???
请教命坐水命,五行缺木是什么意思?
什么样的女孩的肉好吃
家里的塑钢窗户窗槽里下雨就存水,怎么办?
荆州市公安交通管理局二大队八中队地址好找么
求问手机的win8系统好用吗
口字里面一个豚的右边,怎么念?
啊,有已经退了的同学吗
蜂巢蜂蜜吃了有什么好处
南方人在西北读书,空气太干燥不适应怎么办?
纠结中,3系好还是A4
推荐资讯
底部和底面有什么不同
美加分怎么去啊,我要去那办事
我家刚装了宽带,送了一只153的海信手机,我
小区住户没电物业是不是负责维修
电脑 重装系统时找不到硬盘驱动器
实在与诚实有什么区别
交流负反馈通常分成哪四种类型?
高速公路修剪绿篱是多久一次
3DSLL用什么充电器好
我染的紫色头发不到一个月颜色就花了 如果我
梦到僵尸妖怪再门外
房产最有升值空间城市有哪些
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?