赞
踩
前一段时间突发奇想,想白嫖腾讯云云函数的能力来实现无服务模式下 PC 端小程序包的在线解密(注意这里仅仅是做解密)。
因为业余时间以捣鼓有意思的东西作为娱乐活动,对于小程序技术这块本身理解也是比较深刻了,所以碰到相关需求都会首先去想:这 gie 能不能用云函数实现?
于是碰上这种有意思的功能自然想尝试用云函数去搞一下了,顺便积累下云开发经验,看看无服务器云函数到底可以做到什么程度。
开发之前我们是肯定有一套理论指导的,而且这个算法也是开源的。
主要内容如下:
有这个理论知识只要专注实现就可以了,而且已经有大佬实现了相应算法,我们只要拿来测试改一改就可以了。
这里调试分别使用了 go 语言版本与 nodejs 版本,go 版本是没有问题的,node 版需要稍微改动一下。
调试环境
本地验证运行 go 及 nodejs 版本都没有问题,然后就是如何迁移到云函数环境了。
这里并没有纠结于具体使用什么版本的 node,所以一开始就默认用了 10.15,在腾讯云的云开发控制台创建应用时如果选择 koa 应用就默认是这个版本。
然后就是一顿操作了:
文件上传这块有个小插曲,因为不支持大文件直传,所以专门问了云函数产品页面上的客服,说云函数的使用遇到了问题,结果告诉我说这块不归他们管,需要找云开发团队,然后我就懵了,云函数不是云开发下面的产品吗??咋还不归他们管??这是什么合作关系??不过最后为了解决问题我就加了客服微信,然后客服把云开发的技术大佬们拉了一个外部群,群内有十几个人之多,这阵势可让我是受宠若惊啊。不过最后还是解决了,技术大佬给了个方案,扔了几个文档链接让我自己捣鼓,就是看个文档手撸代码嘛,没啥难的,我就"好的"然后自己捣鼓去了。
具体方案就是:
并且额度方面也是够用的:
所以我就按着大佬给的提示继续往下尝试了,编写初始版本。
完事之后我们要进行调试。
这里要区分下大小文件的情况,大文件倒是 OK 的,可以正常获取解密后的文件。
小文件(主要 5M 以内)的情况下测试了很多遍,无一例外都失败了,而且错误原因是(这个和是否使用云存储无关):
{
"library": "digital envelope routines",
"function": "EVP_DecryptFinal_ex",
"reason": "bad decrypt",
"code": "ERR_OSSL_EVP_BAD_DECRYPT"
}
个人感觉是云端 nodejs 运行时带来的版本兼容问题,因为 10.15 是有些低了,所以将函数下载到了本地并把运行时改为了相对较新的 12.16 看看有没有救。
修改 cloudbaserc.json
里面的 runtime
运行时配置:
{
"envId": "xxx",
"functionRoot": "functions",
"functions": [
{
"name": "koa-decrypt",
"timeout": 50,
"runtime": "Nodejs12.16",
"installDependency": true,
"handler": "tcbindex.main"
}
]
}
然后使用命令行覆盖上传云函数即可更改云端运行时。
不过遗憾的是并没有作用,错误依旧。
使用最新的无服务模式实现 PC 端代码包解密功能上云,听起来有意思但是实际上做的时候并没有那么美丽,一番体验下来感觉就是坑好多啊。不过还好大文件的解密是执行成功的,算是成功了一半,要啥
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。