支付宝签名
支付宝签名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | //1024位的RSA密钥基本安全,2048位的密钥极其安全。支付宝建议采用2048位秘钥。 //事实上现在注册的支付宝商户,只能使用SHA256WithRSA算法,老商户才可以继续使用SHA1WithRSA算法 //RSA2 SHA256WithRSA (强烈推荐使用),强制要求RSA密钥的长度至少为2048, //RSA SHA1WithRSA 对RSA密钥的长度不限制,推荐使用2048位以上 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; m,buf_out:array [0..2048] of char ; p:array [0..255] of char ; i:Integer; begin buf_out:= '' ; pKey := nil; if filename= '' then begin Result:= '' ; Exit; end; pKey := LoadPrivateKey(filename); buf_in := PChar(msg); EVP_MD_CTX_init(@ctx); //初始化 EVP_SignInit(@ctx,EVP_sha256()); // 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 rSA_sign(EVP_sha256()._type,m,m_len,buf_out,@outl,pkey.pkey.rsa); //64为SHA1的NID EVP_MD_CTX_cleanup(@ctx); BinToHex(buf_out,p,outl); Result:=EncodeString(hextostring(p)) ; // Result:=EncodeString(StrPas(buf_out)) ; end; |
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/10421576.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2012-02-23 获得客户端的信息
2012-02-23 服务器端如何防止DDOS
2012-02-23 TDSAuthenticationManager的用法