SM2加密的跨语言问题

最近在使用python对接一个java实现的SM2加密。
我尝试了最流行的python库:gmssl(吐槽一下,bug真多),但两边的加解密对不上。
我尝试找一下在线加解密网站,例如:https://the-x.cn/cryptography/Sm2.aspx
测试后我发现它和java算的结果是对得上的,但是和python计算的结果有出入,我有理由怀疑python这边的问题,但是我尝试了其它类似的库,发现都不行(一个能打的都没有) :sweat_smile:
有大佬研究过python中的sm2吗?实在不行的话只能造轮子了 :sweat_smile:

3 Likes

话说sm这一系列东西属于国产自研算法吗 :sweat_smile:

国密的底层加密库算法,每个语言都不太一样,甚至是同语言的依赖版本不一致的,也有可能双曲线的点位选择都不一致 :tieba_089:

都叫国密了,你说呢 :tieba_089:

这个东西,轮子自己造吧,好看不好看无所谓,好用就行,实用主义 :tieba_089:

难蚌,难怪没人造轮子,shit

Java的用过,SM2 SM3 SM4,自己生成的两对密钥,有时候自己都解不了,JDK1.7和1.8还有JDK11,JDK17,依赖包版本不一致,同一对密钥可能解密不成功 :tieba_089:

之前也试过SM2的加密对接,python和网页的加密结果怎么都对不上。最后无奈只能调JS实现了

终于找到一个能用的python包了

我以前想用 Java 改一个 C 的项目,结果加密之后咋也不一致,然后就放弃了

我php调用时也是各种没有,各种不一致,索性用go写一个,给php调用 :rofl: