V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cccchg
V2EX  ›  Node.js

国密 CMBSM2SignWithSM3 在 node 上怎么实现

  •  
  •   cccchg · 2022-10-29 14:36:35 +08:00 · 5552 次点击
    这是一个创建于 738 天前的主题,其中的信息可能已经有所发展或是发生改变。

    国密

    • 对方生成签名使用 CMBSM2SignWithSM3 ( java )
    • 没在 node 上看到有这个实现
    • 各位老哥出出主意
    10 条回复    2022-11-02 14:22:00 +08:00
    mlhadoop
        1
    mlhadoop  
       2022-10-29 18:01:35 +08:00
    农业银行 sm2-sm4 貌似有去看看
    humbass
        2
    humbass  
       2022-10-29 18:52:17 +08:00
    cccchg
        3
    cccchg  
    OP
       2022-10-30 00:49:38 +08:00
    @humbass 这个没 sm2
    PMR
        4
    PMR  
       2022-10-30 01:52:47 +08:00 via Android
    调用 gmssl 的 lib
    libook
        5
    libook  
       2022-10-31 10:58:36 +08:00
    是招商银行的对接吧: http://openhome.cmbchina.com/PayNew/pay/doc/head/netacc/netacc273

    现在 JS 方面应该还没有国密的库,如果用 gmssl 的话可能得写 Wasm 或 N-API 程序来封装 JS 接口。

    或者你用 Java 、PHP 或 Go 封装一个微服务,其他 Node 服务用 RPC 或 HTTP 请求来调用微服务进行签名。

    SM2 对标 RSA 算法,SM3 是 Hash 算法,你可以找 RSA with SHA 的代码看看,然后替换成 SM2 和 SM3 。
    比如先用 SM3 算 Hash ,算出来之后(招行文档里说是用 PKCS#1 Padding )来将 Hash 填到 SM2 的指定长度,然后用 SM2 加密,生成的就是签名了。

    签名的原理可以参考这个: https://blog.csdn.net/m0_38089090/article/details/94653062
    cccchg
        6
    cccchg  
    OP
       2022-10-31 15:29:31 +08:00
    @libook 是的招行的 国密的库是有 但是和 java 的差距太大 也只能搞个微服务 感谢 我去研究下
    wangtian2020
        7
    wangtian2020  
       2022-10-31 16:19:17 +08:00
    https://www.npmjs.com/package/sm3
    npm 上找找有没有,github 上再找一找,找不到那你就是先行者了
    zjjblack
        8
    zjjblack  
       2022-10-31 16:38:04 +08:00
    cccchg
        9
    cccchg  
    OP
       2022-10-31 17:01:41 +08:00
    @zjjblack 就是不知道 CMBSM2SignWithSM3 这个是咋搞的
    humbass
        10
    humbass  
       2022-11-02 14:22:00 +08:00
    CMBSM2SignWithSM3 像这样的名称显然就是某公司自己拍脑袋搞了一个方案,只能拿源码一步一步比对,同步写一份 node 版本的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   987 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:26 · PVG 05:26 · LAX 13:26 · JFK 16:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.