Delphi RSA加解密
感谢、感谢、感谢大佬的分享,https://github.com/ZYHPRO/RSAEncryptAndDecode
目录
1. 前言
2. 准备工作
3. Demo注意事项说明
3.1 公钥、私钥文本格式
3.2 回车键的影响
3.3 中文加解密说明
4. 结语
1. 前言
最近工作上安排了一个项目,与工商银行之间做转账,我看其中涉及到了RSA签名加解密,由于公司写接口都用用Delphi6,老古董了,这RSA算法不好搞。
之前我也自己喜欢收集一些加密算法封装在dll,发现没有RSA这块,看来要自己来搞了。
//MD5 加密 不支持逆向解密
function dll_md5_encrypt(iLen, iUpper: integer; sIn: PWideChar; var sOut: PWideChar): Byte; stdcall;
//BASE64 加密
function dll_base64_encrypt(sIn: PWideChar; var sOut: PWideChar): Byte; stdcall;
//BASE64 解密
function dll_base64_decrypt(sIn: PWideChar; var sOut: PWideChar): Byte; stdcall;
//ECB 加密
function dll_aes_ecb_encrypt(sIn, skey: PWideChar; var sOut: PWideChar): Byte; stdcall;
//ECB 解密
function dll_aes_ecb_decrypt(sIn, skey: PWideChar; var sOut: PWideChar): Byte; stdcall;
//CBC 加密
function dll_aes_cbc_encrypt(sIn, skey, siv: PWideChar; var sOut: PWideChar): Byte; stdcall;
//CBC 解密
function dll_aes_cbc_decrypt(sIn, skey, siv: PWideChar; var sOut: PWideChar): Byte; stdcall;
2. 准备工作
2.1 app应用公私钥一份。
![]()
2.2 开发工具
Delphi XE 10.1 Berlin 这个是我家里电脑一直安装有这个。公司没用。
2.3. 下载源码
这是大佬的源码 感谢分享 https://github.com/ZYHPRO/RSAEncryptAndDecode
# RSA via OpenSSL libeay32
delphi2010以后版本,使用openssl中的libeay32.dll
提供基于私钥/公钥的:
1、RSA加密解密
2、SHA1/SHA256/SHA512摘要运算,
3、Sha1withRSA/Sha256withRSA/Sha512withRSA签名, 其中签名可用于JWT规范
我用的XE10.1版本高了,后续处理了下代码,与大家借鉴下。
3. Demo注意事项说明
3.1 公钥、私钥文本格式
在RSAOpenSSL.pas单元中,TRSAOpenSSL.LoadPrivateKeyFromString方法指定了公钥、私钥的文本内容格式。

如果公钥、密钥文件用记事本打开不是这样样子,就打开在线解析地址
RSA在线加密/在线解密 公钥加密,公钥解密,私钥加密,私钥解密 - The X 在线工具
选择RSA, 将密钥拷贝进去,然后点击其他空白地方,会自动生成内容抬头和内容结尾。然后再拷贝到密钥文件里保存就可以了。

3.2 回车键的影响
Unit1.pas单元117行
Memo的内容出现回车键,需要替换掉,不然影响加密结果(谁知道那里有个回车键...)。
aRSAData.DecryptedData := mmo_pp.Text;
修改为
aRSAData.DecryptedData := StringReplace(mmo_pp.Lines.Text,#13#10,'',[rfIgnoreCase,rfReplaceAll]);
3.3 中文加解密说明
由于我用的是XE10.1,版本高。再Demo的memo里,文本内容出现汉字的话,编码格式是GBK,所以,在线解析和用Demo解析才会一致

这又牵扯到另外一点了,像现在服务一般是Java或C#来写的,一般都是采用UTF8格式。所以修改Unit1.pas单元117行,将
aRSAData.DecryptedData := StringReplace(mmo_pp.Lines.Text,#13#10,'',[rfIgnoreCase,rfReplaceAll]);
修改为
aRSAData.DecryptedData := UTF8Encode(StringReplace(mmo_pp.Lines.Text,#13#10,'',[rfIgnoreCase,rfReplaceAll]));

4. 结语
再次感谢大佬的分享,https://github.com/ZYHPRO/RSAEncryptAndDecode
相关文章:
Delphi RSA加解密
感谢、感谢、感谢大佬的分享,https://github.com/ZYHPRO/RSAEncryptAndDecode 目录 1. 前言 2. 准备工作 3. Demo注意事项说明 3.1 公钥、私钥文本格式 3.2 回车键的影响 3.3 中文加解密说明 4. 结语 1. 前言 最近工作上安排了一个项目,与工商银行之…...
oracle基本操作
文章目录基本操作用户权限管理:权限传递:角色管理:数据导出:对于远程数据库查看表空间查看表空间路径查看被锁的对象基本操作 connect sys/zxm as sysdba-- 用 sys用户登录 create user jsdx identified by jsdx 创建用户 jsdx 密…...
hive只复制表结构不复制表数据
目录 一、背景 二、准备测试数据 1.建表 2.造测试数据 三、操作 1.CTAS (1).无分区表测试 (2).分区表测试 2.LIKE (1).无分区表测试 (2).分区表测试 一、背景 有一张ori_…...
如何将Linux的NIC 名称更改为 eth0 而不是 enps33 或 enp0s25,只要几秒钟
概述 我们使用Linux系统,网卡名称通常都是eth0,但是有一些新的linux发行版,网卡名字 enps33 或 enp0s25。 pengubuntu:~$ ifconfig ens33 Link encap:Ethernet HWaddr 00:0c:29:fd:4d:3a inet addr:192.168.0.113 Bcast:192.168.0.…...
位运算笔记
1. 为什么要学位运算 因为这是计算机内部运算的语言,所以会非常快。 本人是因为学习算法经常遇见一些求二进制中的0和1的各种操作,好多都不知道所以特此整理一下,如有不对,烦请指正。 2. 什么是位运算 程序中的所有数在计算机内存…...
2023全国首个区块链平台发布,区块链绿色消费积分系统玩法悄然上市
全国首个区块链平台发布,区块链绿色消费积分系统玩法悄然上市 2023-02-23 16:15梦龙 大家好,我是你们熟悉而又陌生的好朋友梦龙,一个创业期的年轻人 2月22日,首届中国数字产权创新大会在成都举办。在本次大会上,全国…...
【异常】因为忘加了租户查询条件,导致重复ID导入失败Duplicate entry ‘XXX‘ for key ‘PRIMARY‘
一、异常说明 Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry 670 for key PRIMARYThe error may exist in /mall/admin/mapper/GoodsCategoryMapper.java (best guess)The error may involve .admin.mapper.GoodsCate…...
证明CPU指令是乱序执行的
承接上文CPU缓存一致性原理双击QQ.exe从磁盘加载到内存里面,内存里面就会有了一个进程,进程产生的时候会产生一个主线程,就是main方法所在的线程,cpu会找到main开始的地方,把它的指令读取过来放到程序计数器࿰…...
css 属性和属性值的定义
文章目录css文本属性作业列表属性背景属性作业css文本属性 序号属性描述说明1font-size字体大小浏览器默认16px;2font-family字体当字体是中文字体,英文字体,中间有空格时候,要加双引号,多字体之间用逗号隔开 默认微软…...
Python获取中国大学MOOC某课程评论及其参与人数
文章目录前言一、需求二、分析三、运行结果前言 本系列文章来源于真实的需求本系列文章你来提我来做本系列文章仅供学习参考 一、需求 1、课程参加人数 2、课程学员名称及其评论 二、分析 首先查看网页源代码是否有需要的数据 课程参加人数 课程学员名称及其评论 F12 打开浏…...
【C++】类和对象(完结篇)
文章目录1. 再谈构造函数1.1 初始化列表1.2 explicit关键字2. static 成员2.1 静态成员变量2.1 静态成员函数2.3 练习2.4 总结3. 匿名对象4. 友元4.1 友元函数4.2 友元类5. 内部类6. 拷贝对象时编译器的一些优化7. 再次理解类和对象这篇文章呢,我们来再来对类和对象…...
低代码开发可以解决哪些问题?
低代码开发可以解决哪些问题?如果用4句话去归纳,低代码开发可以解决以下问题—— 为企业提供更高的灵活性,用户可以突破代码的限制自主开发业务应用;通过减少对专业软件开发人员的依赖,公司可以快速响应市场上的新业务…...
Linux 中使用 docker-compose 部署 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议
一、准备环境 MongoDB 副本集部署至少 3 个节点(奇数节点),为了保障数据安全性,可考虑将 MongoDB 节点分布在不同的主机上,本示例使用一台主机部署 3 个 MongoDB示例。 1、创建 MongoDB 集群数据相关目录 # 创建 Mo…...
JavaWeb--Mybatis练习
Mybatis练习Mybatis练习1 配置文件实现CRUD1.1 环境准备1.2 查询所有数据1.2.1 编写接口方法1.2.2 编写SQL语句1.2.3 编写测试方法1.2.4 起别名解决上述问题1.2.5 使用resultMap解决上述问题1.2.6 小结1.3 查询详情1.3.1 编写接口方法1.3.2 编写SQL语句1.3.3 编写测试方法1.3.4…...
Springer-MTA期刊上传Latex要求
https://blog.csdn.net/qq_40721108/article/details/129000957本文简述比较全面Please provide any additional items.If your data are available online, for example in a repository, you can add a weblink using the “Link(s) to supporting data” option from the dr…...
Graph Embedding基础 图表示学习 什么是Graph Embedding
本文包括 DeepWalk LINE SDNE Node2vec Struc2vec等几个重要的Graph Embedding 方法 先说下不同embedding的区别是什么: DeepWalk:采用随机游走,形成序列,采用skip-gram方式生成节点embedding。node2vec:不同的随机游…...
某直聘tp_token解析
尊重版权,请勿盗版,不放代码。截至2023-02-23更新---------------------------------------检测windows属性总数大于150 改成大于15 > 150检测了document属性大于50检测了navigate属性检测了navigate.plugins 属性值检测moudle nodejs是否存在&#x…...
替代启攀微8按键触控八通道触摸芯片-GTC08L
能完美替代启攀微8按键触控八通道电触摸芯片-GTC08L芯片是一款非常适用于音响上超稳定超抗干扰低功耗八通道电容式触摸IC;可通过触摸实现各种逻辑功能控制;操作简单、方便实用;电压范围宽,可在2.7V~5.5V(单…...
Zabbix“专家坐诊”第182期问答汇总
问题一: Q:像烽火、浪潮这种没有ilo的设备怎么监控他们的硬件状态呢? A:如果没有ilo,可以使用其他硬件监控软件,例如HP Insight Manager、IBM Director、Dell OpenManage等。这些软件可以帮助您监控硬件状…...
PHP、Nginx、openssl ECC证书搭建
在一台Ubuntu中#!/bin/bash# 安装 Nginxsudo apt-get updatesudo apt-get install nginxsudo apt-get install libssl-devsudo apt-get install -y nginx# 配置 Nginxsudo ufw allow Nginx HTTPsudo systemctl start nginxsudo systemctl enable nginx# 安装 PHPsudo apt-get i…...
用JavaScript高效生成专业PPT:PptxGenJS深度解析与5种实战应用
用JavaScript高效生成专业PPT:PptxGenJS深度解析与5种实战应用 【免费下载链接】PptxGenJS Build PowerPoint presentations with JavaScript. Works with Node, React, web browsers, and more. 项目地址: https://gitcode.com/gh_mirrors/pp/PptxGenJS 在数…...
智能化磁盘空间革命:CleanMyWechat如何一键释放微信PC端数十GB存储空间
智能化磁盘空间革命:CleanMyWechat如何一键释放微信PC端数十GB存储空间 【免费下载链接】CleanMyWechat 自动删除 PC 端微信缓存数据,包括从所有聊天中自动下载的大量文件、视频、图片等数据内容,解放你的空间。 项目地址: https://gitcode…...
Altium Designer PCB设计效率翻倍:这30个快捷键让你告别鼠标流(附实战技巧)
Altium Designer PCB设计效率革命:30个核心快捷键与高阶应用策略 在电子设计自动化领域,效率提升从来不是简单的技巧堆砌,而是工作流的重构与思维模式的升级。作为从业15年的PCB设计专家,我见证过太多工程师被困在重复性操作中&am…...
Quartus II ROM IP核的配置与高效初始化文件生成技巧
1. ROM IP核基础与使用场景 在FPGA开发中,ROM(Read-Only Memory)是一种常用的存储元件。与RAM不同,ROM中的数据在配置后是固定不变的,非常适合存储不需要频繁修改的配置数据、查找表或预置参数。Quartus II作为业界主流…...
开源广告拦截工具AdGuard浏览器扩展:全平台部署与效率优化指南
开源广告拦截工具AdGuard浏览器扩展:全平台部署与效率优化指南 【免费下载链接】AdguardBrowserExtension AdGuard browser extension 项目地址: https://gitcode.com/gh_mirrors/ad/AdguardBrowserExtension 【价值解析】AdGuard扩展如何重塑你的网络浏览体…...
安卓集成Google TTS引擎:实现离线中文语音播报的完整实践
1. 为什么需要Google TTS引擎 很多安卓开发者都遇到过这样的需求:在应用中实现文字转语音功能。系统自带的Pico TTS引擎虽然轻量,但最大的痛点就是不支持中文。我去年开发一个盲人辅助应用时就踩过这个坑,测试时发现语音输出全是英文…...
OpenCore配置效率工具:从入门到精通的黑苹果EFI管理方案
OpenCore配置效率工具:从入门到精通的黑苹果EFI管理方案 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore(OCAT) 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools 在黑苹果配置领…...
readme-ai模板系统详解:如何创建自定义文档样式
readme-ai模板系统详解:如何创建自定义文档样式 【免费下载链接】readme-ai README file generator, powered by AI. 项目地址: https://gitcode.com/gh_mirrors/re/readme-ai 在当今开源项目中,专业的README文档是吸引用户和贡献者的关键。readm…...
YamlDotNet类型推断:智能处理复杂对象图的完整指南
YamlDotNet类型推断:智能处理复杂对象图的完整指南 【免费下载链接】YamlDotNet YamlDotNet is a .NET library for YAML 项目地址: https://gitcode.com/gh_mirrors/ya/YamlDotNet YamlDotNet是一个功能强大的.NET库,专为处理YAML数据格式而设计…...
【深度评测】C盘爆满别慌!小番茄C盘清理的五大核心功能实测
1. 为什么你的C盘总是爆满? 每次打开电脑看到C盘飘红,是不是感觉血压都上来了?作为一个常年和磁盘空间斗智斗勇的老司机,我发现C盘爆满的原因远比想象中复杂。系统更新残留、软件缓存堆积、临时文件泛滥...这些"隐形杀手&quo…...
