Delphi SM2/SM4国密算法

    最近忙个医保平台的项目,涉及SM2/SM4的签名,验签,加密,解密的业务操作过程。毕竟现在用Delpih的人不是很多,懂这方面的技术的人也更少,能涉及密码算法的少之更少,网上也能搜到一些开源的代码,也由于使用的人少,未加通过业务系统来验证,所以存在不少Bug。

     本来想省事,网上也有卖封装好的DLL的人,可对于一个老鸟级的程序员来说,是莫大的侮辱。其实想了很多办法,最终还是用原生态的pasical语言解决了SM2签名,验签,SM4加密解密的问题。

第一种解决思路:用医保中心提供的java工具,搭建签名,加密服务,用Delphi用过API调用。这个方式在实际业务中被否了,因为对于客户端的改造比较大。

第二种看有人用Delphi调用Java类的方式来实现,感觉过程太多繁琐,而且容易出错,也是一种委曲求全的办法。

第三种就是用原生的pasical来做SM2的签名和SM4的加密解密。涉及的细节比较繁琐,就不意义一一赘述,BC库的版本问题,初始化的问题,HEX,Base64,UTF8,ANsiString,Pansichar等各种类型的倒腾,最终还是通过了医保中心业务系统的调用。纯粹的pascial的处理,不使用任何第三方DLL的。

感叹,Delphi的没落,造成了使用的少,精通Delph开发这么方面的人越来越少了。所以代码的可复制性,易用性缺乏实践的检验。

发点图看看成果吧。

 

 

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值