如何获取密文的解密过程?
本帖最后由 黄色土豆 于 2024-3-6 10:59 编辑我想在一个农行的生活缴费里面,实现自动查询饭卡余额的一个小功能,但是发现,后端返回给前端的是密文,前端需要进行解密才能渲染到网页上;
目前在浏览器中进行debug,找到了解密的方法,看到方法名为 SSM_ExtSM4Dec_ECB_Pad_Array ,可以看到是 SM4算法,ECB模式,方法由于编译后也是无法看到实际执行流程;
请大佬给些提示,比如怎么去解密,有没有解密的小工具,还有这是什么类型的加密,给个思路,谢谢
本帖最后由 爱飞的猫 于 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 了。 爱飞的猫 发表于 2024-3-5 17:37
你需要在图里找到的的 j 方法下断点,然后使用步进功能对算法进行分析。
OK,谢谢,我一个一个的试试 把B.a那个对象扣出来,自己写个函数调用 本帖最后由 160236164 于 2024-3-5 19:33 编辑
sm4是国密非对称算法,大致类似rsa,简单来说,你需要找到前端用的公钥,一般是写死在前端哪里的,再找找开源的sm4加解密库,直接用来解密就行了。也有可能前端还有一些特殊处理,就需要debug前端代码了。另外就是你图里有ecb字样,可能是简单的对称加密,应该更简单 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)。 如果加密算法搞不清楚的话,直接将这一块的代码复制下来,单独调用这个JS即可,python和java都有相关的库,直接调用这个JS即可实现解密。
页:
[1]
2