黄色土豆 发表于 2024-3-5 17:13

如何获取密文的解密过程?

本帖最后由 黄色土豆 于 2024-3-6 10:59 编辑

我想在一个农行的生活缴费里面,实现自动查询饭卡余额的一个小功能,但是发现,后端返回给前端的是密文,前端需要进行解密才能渲染到网页上;
目前在浏览器中进行debug,找到了解密的方法,看到方法名为 SSM_ExtSM4Dec_ECB_Pad_Array ,可以看到是 SM4算法,ECB模式,方法由于编译后也是无法看到实际执行流程;
请大佬给些提示,比如怎么去解密,有没有解密的小工具,还有这是什么类型的加密,给个思路,谢谢

yemind 发表于 2024-3-5 17:21

爱飞的猫 发表于 2024-3-5 17:37

本帖最后由 爱飞的猫 于 2024-3-6 03:47 编辑

你需要在图里找到的的 j 方法下断点,然后使用步进功能对算法进行分析。

https://imgsrc.baidu.com/forum/pic/item/5243fbf2b211931301e4a48a23380cd791238d61.png

如果他的方法名是正确的话,你可以尝试使用支持 SM4 的库使用相同的密钥来对数据进行解密,观察解密后的内容是否一致。

Java 下常用的应该是 Bouncy Castle 吧,相关官方文档:org.bouncycastle.jcajce.provider.symmetric.SM4

如果正常调用 SM4 相关方法解决不了,还有个方法就是把相关的 js 代码抠出来,然后启动一个 JS 引擎,把代码传入引擎后调用。Java 的话不清楚怎么加载执行 js 了。

shixian1060 发表于 2024-3-5 17:47

黄色土豆 发表于 2024-3-5 17:54

爱飞的猫 发表于 2024-3-5 17:37
你需要在图里找到的的 j 方法下断点,然后使用步进功能对算法进行分析。




OK,谢谢,我一个一个的试试

yy103050 发表于 2024-3-5 17:59

十万菠萝拍黄瓜 发表于 2024-3-5 18:41

把B.a那个对象扣出来,自己写个函数调用

160236164 发表于 2024-3-5 19:29

本帖最后由 160236164 于 2024-3-5 19:33 编辑

sm4是国密非对称算法,大致类似rsa,简单来说,你需要找到前端用的公钥,一般是写死在前端哪里的,再找找开源的sm4加解密库,直接用来解密就行了。也有可能前端还有一些特殊处理,就需要debug前端代码了。另外就是你图里有ecb字样,可能是简单的对称加密,应该更简单

爱飞的猫 发表于 2024-3-6 02:29

160236164 发表于 2024-3-5 19:29
sm4是国密非对称算法,大致类似rsa,简单来说,你需要找到前端用的公钥,一般是写死在前端哪里的,再找找开 ...

SM4 是分组对称密码算法哦,对标 AES 算法。参考资料 [|GB/T 32907-2016 - 信息安全技术 SM4分组密码算法](https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7803DE42D3BC5E80B0C3E5D8E873D56A)

你描述的算法听起来更像是 (https://openstd.samr.gov.cn/bzgk/gb/std_list_type?p.p2=SM2)。

忧郁剑客 发表于 2024-3-6 09:23

如果加密算法搞不清楚的话,直接将这一块的代码复制下来,单独调用这个JS即可,python和java都有相关的库,直接调用这个JS即可实现解密。
页: [1] 2
查看完整版本: 如何获取密文的解密过程?