查看: 40|回复: 0

uni-app app vue 小程序 RSA 加密/解密 使用 jsencrypt 踩坑(Message too long for RSA/Cannot read property 'appName')(一)

[复制链接]

2

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2009-8-13
发表于 2021-6-25 17:32:00 | 显示全部楼层 |阅读模式

老弟的APP最近要重新改造,数据传输这一块要进行加密(虽然APP能反编译...不过有总比没有好)。

他后台用的是RSA加密,需要我uniapp的前端进行数据解密。

那就……开工吧:

 

【尝试一】

教程地址: https://www.cnblogs.com/sunnycc/p/13448670.html

 

把js下载下来,引入:

然后运行项目,结果发现报错:Cannot read property 'appName'

 

原因:该教程里的jsencrypt.js,不是vue版本,window等关键字都存在,不报错才怪!

 

好吧,我比较懒,也懒得去看源码,先找找有没有uniapp或者vue版本的jsencrypt.js吧:

 

 

【尝试二】

教程地址:https://www.jianshu.com/p/adc471b4d5d6

 

这次的jsencrypt.js是github(仓库地址:https://github.com/ShuKeHong/uniapp-jsencrypt)上的uniapp版本,看着也更靠谱:

照着文中步骤一步步进行了配置:

 

然后运行起来看一下:

 

 哎哟,好像对了耶!

 

于是我又拿着老弟给我的真实数据,进行测试:

 

纳尼!!报错了:Message too long for RSA

 

好家伙,密文直接给我干成false了!看来这个也有问题鸭!

 

猜测是加密的字符串太长,导致了异常。但我还是懒,不想去看源码,继续百度!

 

 

【尝试三】

教程地址:https://www.freesion.com/article/8202630659/

 

文中提到了encryptlong.js,感觉这个和我的问题正好互补,应该靠谱,试试水吧:

结果遇到了最开始的那种问题:

 

呵呵!这个js也不支持vue,难道天要亡我吗???

 

不!我命油我不油天!要不……咱们还是看源码吧!

……

……

经过一顿简单操作,终于成功了:

 

 

 那么我是如何成功的呢?

①将【尝试三】中(仓库地址:https://www.npmjs.com/package/encryptlong)源码里的 encryptLong 方法和 decryptLong 方法,

拷贝到【尝试二】中(仓库地址:https://github.com/ShuKeHong/uniapp-jsencrypt);

②加密时调用encryptLong方法,解密时调用decryptLong方法;

 

完美,神功大成!

 

---------------------------------------------------

然而并没有完美,后来又发现问题了。详情请看第二篇:《uni-app app vue 小程序 RSA 加密/解密 使用 jsencrypt 踩坑(字符乱码问题)(二)》

 

 

有点饿了,拿碗排队打饭!

 

如果对您有帮助,可以的话请帮我点个赞吧,谢谢~

 



来源:https://www.cnblogs.com/wshisboy/p/14905388.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部