• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

delphi与python混合编程实现数据加密

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1,缘起

某个项目需要实现数据加密上传,主程序拟采用delphi7实现,其中的数据加密采用RSA,Cipher_pkcs1_v1_5加密。

该加密在python中容易实现,且已经有现成的加密函数。

如果在delphi中重新实现该算法,由于无现成的库可用,需要自己编写,比较麻烦且结果不一定正确。

因此,delphi程序如何能借用已有的python算法成为一个现实问题。

2,思路

首先,python源码在现场运行不现实,因为在现场电脑上安装python运行环境会面临不确定性。因此,首先否定运行python源码的想法。

其次,采用 python4delphi?感觉不好,存在隐患:涉及Python版本、P4D版本,Python依赖库、unicode等。对当前delphi IDE环境也有破坏。

再次,既然不能运行python源码,那么能否将python源码编译为exe程序呢?答案是肯定的,采用pyinstaller就行。

因此,确定架构为delphi EXE程序(以下简称DE程序)调用Python EXE程序(以下简称PE程序)

3,DE与PE的调用方式

那么DE程序如何调用PE程序呢?

很明显的一种方式是 DE采用winExec函数,调用PE,传入待加密字符串,返回加密结果

但此法的缺点很明显,如

  • 每次加密均需调用运行释放PE一次,耗费时间
  • 不能同步返回结果,winExec启动PE程序后就返回,DE程序需要循环判断PE程序释放执行完成
  • 最关键的一点,winExec不能返回PE程序退出时的返回值

 

因此,很自然地想到采用UDP通信方式。好处也是显而易见的,

  • 调用关系明确,DE启动时自动启动PE,DE退出时自动关闭PE
  • 同步调用,响应及时。IdUDPClient1.Send后,IdUDPClient1.ReceiveString会阻塞,直到结果返回。

4,demo运行

下图中server.exe来源于server.py代码,由pyinstaller编译为windows EXE文件。

delphi程序请求加密,server.exe收到数据后将其加密后返回,delphi程序将密文显示在右侧列表框。

 

 

5,总结

  • 混合编程可以发挥多种语言的优势。已有的功能不妨多包装借用,省时省力且质量有保障。
  • 多程序间数据交换尽可能采用UDP、TCP协议,使用灵活、速度快捷。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi串口通信数据位长度对传输数据的影响转发布时间:2022-07-18
下一篇:
delphi teechrt中TChart 一些属性设置发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap