V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dddddawn
V2EX  ›  问与答

国密加密算法 SM4

  •  
  •   dddddawn · 2020-11-11 17:10:26 +08:00 · 2266 次点击
    这是一个创建于 1473 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有懂的朋友进来详细讲讲 SM4,现在是趋势了吗?之前没有了解和接触过,百度了一轮网上资料很少,求详细讲解资料和示例

    20 条回复    2020-11-13 21:28:49 +08:00
    YamchaL
        1
    YamchaL  
       2020-11-11 17:46:54 +08:00
    只知道是中国版 AES,详细规范在国标系统有
    dddddawn
        2
    dddddawn  
    OP
       2020-11-11 18:26:00 +08:00
    @YamchaL 朋友来个链接呢?主要是加密出来和对方用加密机加密的结果不一致
    YamchaL
        3
    YamchaL  
       2020-11-11 18:27:32 +08:00
    Allan0423
        4
    Allan0423  
       2020-11-11 20:44:09 +08:00
    ZF 和企事业单位确实在推进密码国产化,版本新一点的 openssl 都支持 S-M2/3/4 了,可以用来对结果进行验证。
    Allan0423
        5
    Allan0423  
       2020-11-11 20:44:48 +08:00
    ↑↑↑是 V2 逼我用字母的(投降
    borisz
        6
    borisz  
       2020-11-11 21:29:18 +08:00
    openssl enc -ciphers 可以看到支持 sm4 CBC/CFB/CTR/ECB/OFB, 两个结果不一样应该是 padding 不一样吧
    billlee
        7
    billlee  
       2020-11-11 22:11:29 +08:00
    加密结果不一样是正常吧?都有随机 IV 的吧
    dddddawn
        8
    dddddawn  
    OP
       2020-11-12 09:57:56 +08:00
    @borisz ECB 和 CBC 什么区别呢?百度百科的代码感觉不太对呀
    dddddawn
        9
    dddddawn  
    OP
       2020-11-12 09:59:15 +08:00
    @YamchaL 打开不了 flash- -
    dddddawn
        10
    dddddawn  
    OP
       2020-11-12 10:00:00 +08:00
    @billlee 我觉得是对方给的 demo 算法和他们加密机算法估计不一致吧
    dddddawn
        11
    dddddawn  
    OP
       2020-11-12 10:00:26 +08:00
    @Allan0423 你用过没?百度百科的代码可以用吗
    jzmws
        12
    jzmws  
       2020-11-12 10:29:42 +08:00
    国密挺好用的! 至少是无感知的用
    dddddawn
        13
    dddddawn  
    OP
       2020-11-12 10:44:23 +08:00
    @jzmws 无感知的用,什么意思呢
    borisz
        14
    borisz  
       2020-11-12 12:16:50 +08:00
    @dddddawn 对方加密的内容, 你先用 openssl 解密一下, 看看能行不.
    borisz
        15
    borisz  
       2020-11-12 12:18:20 +08:00
    @dddddawn 抱歉,错了, 应该是你用 openssl, 用相同的 key, iv 再加密一次看看结果和你一样, 还是和对方一样.
    dddddawn
        16
    dddddawn  
    OP
       2020-11-12 14:03:51 +08:00
    @borisz 只提供了 key,未提供 iv (弱弱问句,iv 是啥)。目前是给我描述了算法,先 md5 加密,再对 md5 结果 sm4 加密最后得到 32 位签名,但是和请求体自带的签名不一致
    Allan0423
        17
    Allan0423  
       2020-11-12 20:25:54 +08:00
    @dddddawn
    龟龟,你在说啥啊?
    没给 IV 那可能是用的 ECB 模式,MD5 不是加密,是摘要,SM4 是加密算法,签名得用 SM2 。
    请求带的签名是需要私钥运算出来的,你没私钥怎么得到签名?
    看你的回复好像没有这方面的基础知识,这就不是 V 友三言两语能给你说明白的了。
    dddddawn
        18
    dddddawn  
    OP
       2020-11-13 09:46:37 +08:00
    @Allan0423 key 指的不是私钥吗?所以不懂 iv 指的是啥。是通过 sm4 对 md5 结果(请求内容生成 md5 摘要)加密生成的签名
    orangeTop
        19
    orangeTop  
       2020-11-13 10:28:28 +08:00
    这个目前我们和政府的项目就必须使用 sm3 加密,但是都是调用第三方接口
    Allan0423
        20
    Allan0423  
       2020-11-13 21:28:49 +08:00
    @dddddawn key 可以是私钥,也可以指对称加密算法的密钥,IV 是给对称加密算法的特定模式使用的。SM4 是对称加密算法,做不了签名。你说的“通过 sm4 对 md5 结果(请求内容生成 md5 摘要)加密生成的签名” 这是不可能的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2530 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:28 · PVG 23:28 · LAX 07:28 · JFK 10:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.