DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jeff1314
今日帖子: 0
在线用户: 7
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 yesin119 (yesin119) ★☆☆☆☆ -
盒子活跃会员
2020/6/10 15:05:51
标题:
Delphi的SHA256WithRSA算法,搞了一上午,没成功 浏览:5600
加入我的收藏
楼主: 对算法了解比较弱
百度了一下比较少这个算法的例子,花了好多csdn积分,没合适的:(
请问在Delphi 10.3中如何使用这个算法?
RSA私钥(2048位,PKCS8填充)

多谢
----------------------------------------------
-
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2020/6/10 16:12:03
1楼: qdac不是有类库吗?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2020/6/10 16:13:09
1楼: 开发平台算法名称  标准签名算法名称  备注
RSA2  SHA256WithRSA  (强烈推荐使用),强制要求RSA密钥的长度至少为2048
RSA  SHA1WithRSA  对RSA密钥的长度不限制,推荐使用2048位以上


作者:新亮笔记
链接:https://www.jianshu.com/p/78dd47c0fcf9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


https://example-code.com/delphiAx/rsa_sha256_signature_using_java_keystore.asp
这个网站真神奇。
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2020/6/10 16:56:40
2楼: CnPack组件包中有RSA与SHA256等各种加解密算法的实现,支持D5到D10.4

https://github.com/cnpack/cnvcl.git

例子见cnvcl/Examples/RSA 以及 cnvcl/Examples/Crypt
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2020/6/10 17:02:18
3楼: 看需求应该是要求使用RSA 2048与SHA256进行文件或数据的签名验证。
cnvcl/Examples/RSA例子中的“BigNumber RSA”一页应该满足楼主要求。
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 yesin119 (yesin119) ★☆☆☆☆ -
盒子活跃会员
2020/6/11 8:43:40
4楼: 多谢各位大侠!
我本以为再Openssl有类似的库
因为要跟线上的一个java项目对接,之前就有过坑,delphi和java算法不兼容,导致有差异无法通过。
这次是做一个支付接口,不知道是否行得通。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2020/6/11 9:18:21
5楼: delphi 和 java 从来都没有算法不兼容。都是数学,难道 DELPHI 和 JAVA 的数学是两个不同的宇宙?
难道 1+1 = 2 在本宇宙不适用了?\

cnvcl 的算法没问题,问题在于 string 这个类型,就应该删除,换成 PBYTE 或 TBytes 这样,小白才不会搞错。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2020/6/11 9:23:42
6楼: 支持5楼Flying Wang 的说法
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2020/6/11 10:14:44
7楼: 算法没区别,格式可能有兼容性问题,比如Java的KeyStore格式和Openssl使用的PEM格式就没法通用。

cnvcl里已增加了一部分TBytes类型参数的方法,可能还有遗漏的欢迎指出,我们慢慢补。
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 yesin119 (yesin119) ★☆☆☆☆ -
盒子活跃会员
2020/6/11 10:25:27
8楼: to cnpack:BigNumber RSA,这个页面内容非常多,有点眼花缭乱。

目前做的接口是这样说明的:

待签名串A,然后用SHA256WithRSA算法私钥签名,得到sign值。

示例RSA私钥(2048位,PKCS8填充)

MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC4/SMF+Fe+aNPZvjPM3kQ4B8pAk19KMqbAWEPBpTY1ZjZfvAP3uhnaY9W+fiwcRqs/yadjasvPCTlsilCF/1yttidTqu+9gKMoOyqq/3GfWVRs/GpRLHSEVczg5tXIlrA8pAHl8nI1GZUxvaPNessHaWF8czEKlGgfPKFrD28umY7svw4BU639C2d8LoKtGr3m/kXiFhJlCKLYeO/NYGUK+bmt6A5+EavgWCAUPgPZx5tpB+PuGp8213aSQtAvLTxjOZTNm/63RmqZnl2ONIuJxxa+kCOmmF1Syncu4wEtW/zZwRs4swRXJIFXZYuZXLTCrZb2JJG/ey0ChY4diQHXAgMBAAECggEACJp9ToHGUuy9LZtS/Ww48AIsveQcwm6oorl4LUFpzAH89WbhKFxXZ3jNMBbeJlKDFGxkhJMq924OZaXpKNI/lTSrj5Cbpcydyfk2es12k1qsOoVizHOs15rF9I/H0ZRwjeFy1Sb5eM6/yZhwTdYwKyATkJ4q4bsVPJ6tQzVsjlYxottZMpYhpIRvyaz0MuGDL4McJj/6JrhaEKHMnJvKka66BUzat2zngoRbxgXVlhL3Vs0EA1T1MkOmVDjAPIOqz9jwxNffqIZLcfmHZ/wnaHnMvWA4gmTH2ZQ747m1PuItt+/FaL+anL6YrVzSR6lp7Y2OKZimsu0/BspixVlhAQKBgQDu7xwaWBeMS/lcJS4Qy0FpRlzhaSxNIe7gA/y2dRI596jWpYXsPzCoDWsmBt+d+5F6bSETG2ada+ttooMuDIbEmvjO8XrI2MxBc/aj8We4nYcTEL0mchCB3A5Z++dsKiIKibtKSWSk5GYS/vsrtHOFhPyUJOOVo1qrsD9qUBiKxwKBgQDGM6SghFX7K4VAlGt1QXQInWn84g6xNsvAu0y/3KOSFz0XGp6a1L+CMVdId2V8YohR4qzLayWENa+DPGyc/V31IqWCLrivc9CBJTzGQHLWkMSdnfQXMLoQAtJ/+WZVzYV8jLS8u9HJPueibBx2XN+k6b7PJq/TfpE5FlrWje5AcQKBgFYJdfYqiHg1l1pN7RORDUHKW4GzrIct0+WIqgRNjb2f54U7X0kdy/iHtHCiAv3Ra6ZJC6LkuAOxq7nzzgbT7ed34mYqYEtYfdyH1GVedTnuR4he+62PX1BTnDtc0Q2K8m0XAYETgpE5yWPHu0wWk46dv5Hc4rKseubd9UfkBaJbAoGAHRWc9dUVjOsA/c4JysYVEeKPmAVQJJ8m3RxfEdR9yEVSuJ42YgAQLjmxVjf3E36eBG4f7yXE9pauL7LhOVRQwlUYNndGsLBtC1Z8iZcRgvzxbTOtiu2ikBDp9M+TPcoP6Yv4Ra3GBiMN+J6mupO8WcXXMyy5Jm7vPpJSOCPRr3ECgYBvkU9yoWbVeMdVE/v5PM4KfIgXD82MQKmaDuZt1ZfN4ePc7omkWDR4JiOcq/ZmUzN2ki4kXEYIq0qZ0+zUM4GN7oaNJY9ag1c3jgouyMBd9f1uaVX1vbNC791C7R9A9C+dxxY+x0j6CauUAOX0/lYs05WiDy2nepcPZNBjqxQnZg==

示例签名值sign

"sign":"ZaTPTwYxqFfMQBsBDkr3OvuWJNzHmZRpC2rqYDdzg10OVWDkQoJA4FKgelGtbUaN27Mw/cLmDZr8buJos54+djnsNEVLOjJTrmlT39sWw46qLNzpzeHHHyNukaddHe7cUh3UqhrQxgMUO5c7BpEhpuxlkiBa5hf4PiWjRAqPBZoupBQ3GKhAk3qs1v7o2lvQUOa6VPEtZe//ABwRdQUoFqy6J6LOapZh4fr5I2Z4PJdghbG8oGtBbOr7O5An2ZM7BQU6FjZC57qOV265ry2CrX5u6Zf34j+Xt6TeUZj26QLY09bih/e9oaeB5BPhwcZTQcjtKIoedyraA1CMJfCqIA=="

请指教一下,我该用哪个比较合适?
----------------------------------------------
-
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2020/6/11 11:11:37
9楼: 把私钥那段文本前后加上
-----BEGIN PRIVATE KEY-----

-----END PRIVATE KEY-----

再存成扩展名为PEM的文件,就能通过中间的Load PEM按钮载入私钥了。

再在下面的Original File里选你要签名的文件A,Signature Algorithm选SHA256,点击Sign Using PrivateKey,就能生成签名文件。

不过默认的签名内容是二进制的,你还需要再Base64一下,才能和示例签名值那样可读。

如果要验证示例签名,要将其Base64解码成二进制文件,再跑我们的例子,在例子中同样Load PEM,选源文件,再在下方选择签名文件,点击Verify Using Public Key即可实施验证。
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2020/6/11 11:56:32
10楼: 高版本Delphi自带了SHA的算法.
System.Hash.pas
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 drroc (mvcxe) ★☆☆☆☆ -
盒子活跃会员
2020/6/11 13:48:33
11楼: 虽然楼主是因为要与java对接才搞sha这些算法,其实如果不是做什么特高级的项目,简简单单加个密用xxtea这类短小精悍算法省心省力
----------------------------------------------
MVCXE中国首个DELPHI MVC WEB框架:https://www.mvcxe.com/
作者:
男 l_wming (L_Wming) ★☆☆☆☆ -
普通会员
2020/6/11 13:57:38
12楼: 网上RSA签名/验签的比较多,
string类型/UTF8编码、Base64编码、2048/1024秘钥、待加密的字符串太长要分段、不一样的填充方式等有各种坑

最后问下:私钥加密/公钥解密的有没有?
Delphi加解密能和:http://tool.chacuo.net/cryptrsaprikey 上加解密保持一致
----------------------------------------------
-
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2020/6/11 15:28:38
13楼: 楼上。cnvcl里有。同样是cnvcl/Examples/RSA例子里,第二页下部的不同子页有RSA加解密(支持公私互加解)、签名验签的功能。
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 yesin119 (yesin119) ★☆☆☆☆ -
盒子活跃会员
2020/6/11 18:36:06
14楼: 嗯,多谢cnpack的解答。
因为这个公钥私钥对于我们来说,不会变,所以我本身想定义一个常量来直接写在单元里,而不是去保存成一个文件,再来load,感觉搞得有点复杂,有些客户机上把软件装再c盘,保存文件有时候会有点问题。

wr960204 (武稀松)

SHA256WithRSA

这个公钥私钥验签的算法在System.Hash.pas应该没有吧?
----------------------------------------------
-
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2020/6/11 19:08:26
15楼: 常量同样支持。

例子中Load PEM后,各个编辑框里便是RSA公私钥对应的大整数值,可以复制到代码里作为字符串形式存在。

然后新建TCnRSAPrivateKey和TCnRSAPublicKey对象,再针对其各个大数属性在代码里赋值,调用SetDec方法即可,效果等同于CnRSALoadKeysFromPem函数。具体哪个函数赋值为哪个大整数参考属性们的注释就行。
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 star5 (星五) ★☆☆☆☆ -
盒子活跃会员
2020/6/12 9:23:15
16楼: 支付宝支付签名就是用的这个算法。。。我是用go来转签的。
----------------------------------------------
博客 - http://offeu.com
脚本模型 - http://webpascal.com
需要短信接口的请联系我,可发行业与营销内容。
作者:
男 yesin119 (yesin119) ★☆☆☆☆ -
盒子活跃会员
2020/6/13 11:18:33
17楼: cnpack (CnPack)
有没有机会能加一下大侠qq或者微信呢?cnpack搞得太专业了
我确实太菜,这个RSA又刨了一遍百度

RSA文章不多,有用libeay32.pas的,这个比较方便应用
https://blog.csdn.net/missingzlp/article/details/103377138
尝试了一下,估计libeay32.pas版本不对,失败

一般的加密算法,是加密的字符A,密码B,得到密文C。
cnpack这个有七八项....能否整理一个能给小白用的?
万分感谢
----------------------------------------------
-
作者:
男 yesin119 (yesin119) ★☆☆☆☆ -
盒子活跃会员
2020/6/13 14:06:15
18楼: 已解决,谢谢
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2020/6/13 14:06:21
18楼: 建议去  openssl 二进制 官方找 098 按此在新窗口浏览图片
有好几家编译二进制的  只有一家有  indy用的098
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 glwang (glwang) ★☆☆☆☆ -
盒子活跃会员
2020/6/13 14:41:38
19楼: 楼主把解决的代码贴一下呗~~
----------------------------------------------
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2020/6/13 16:01:58
20楼: 17楼,可以加我QQ 21808552,我把你拉入CnPack QQ群吧。
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2020/6/13 19:20:26
21楼: 七八项那是因为RSA的算法细节确实就有这么多项。按OPENSSL的规矩这七八项是统一BER/PEM格式编码到类似你发的一大串Base64字符里作为“一个密钥文件”而存在的,但你这边的需求又不想处理这个密钥文件,就只能拆开处理了。

CnPack由于人力有限,文档确实比较缺乏。楼主如果是通过CnPack的RSA相关代码解决了问题,那么也希望能总结一下经验分享一下,那就更好了。

附带说明一句,CnPack里的加解密相关代码是纯Delphi的实现,完全脱离Openssl或其他SSL库,支持Delphi 5~10.4,支持Unicode与非Unicode,支持32位与64位,支持FMX框架下的Win与Mac平台(linux还没测过)。
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2020/7/19 23:33:42
22楼: 抽空写了一篇CnPack组件包中CnRSA部分单元的说明文档,包含对RSA算法的说明,可以看一下:

http://www.cnpack.org/showdetail.php?id=867&lang=zh-cn
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
作者:
男 zxh3344 (zxh3344) ★☆☆☆☆ -
普通会员
2020/10/2 21:25:34
23楼: CnRSA 什么时候能够支持linux就更好啦
----------------------------------------------
-
作者:
男 ksrsoft (cb168) ★☆☆☆☆ -
普通会员
2021/5/9 9:16:33
24楼: RSA SHA
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2021/5/9 9:58:40
25楼: RSA via OpenSSL libeay32
delphi7,使用openssl中的libeay32.dll 提供基于私钥/公钥的:1、RSA加密解密 2、SHA1/SHA256/SHA512摘要运算,3、Sha1withRSA/Sha256withRSA/Sha512withRSA签名 其中签名可用于JWT规范

https://github.com/zj21st/demoOpenSSLlibeay32withDelphi7

?
https://github.com/search?l=pascal&q=jwt&type=Repositories
能别刷帖了么。。。。这么个问题。。 github 上一堆答案
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 kostyantynko (KostyantynX) ▲▲△△△ -
普通会员
2021/5/9 14:07:28
26楼: Also try FGint modulus.
https://github.com/SnakeDoctor/FGInt/blob/master/FGInt.pas
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行45.89844毫秒 RSS