以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  DecryptText解密错误  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=143507)

--  作者:yellow
--  发布时间:2019/11/27 11:42:00
--  DecryptText解密错误

仿照微信接口库开发指南制作扫码登录客户端。测试扫码时总是提示:Base-64 字符数组或字符串的长度无效。

按照论坛说的方法重写加密函数后不提示错误了。但测试HttpRequest时好像解密不成功,调试如下:

……

msgbox(nonce & "||" & token)
loginid = DecryptText(urldecode(token),nonce,Vars("dkey"))     \'解密出loginid,dkey为公共密钥
msgbox("解出的loginid:" & loginid)

……

第一个msgbox显示出正常信息,第二个msgbox则显示loginid为空

 

单独把解密语句放到命令行执行又可以成功解密出loginid

这到底是怎么回事啊???

 

附重写加密函数:

Public Function DecryptText(s As String, m1 As String, m2 As String) As String
try
    Return Foxtable.DecryptText(s,m1,m2)
catch ex As Exception
    Return Nothing
End try
End Function

 

 


--  作者:有点蓝
--  发布时间:2019/11/27 11:57:00
--  
token、nonce、Vars("dkey")分别是什么内容?发上来测试一下
--  作者:yellow
--  发布时间:2019/11/27 14:39:00
--  

例如:

nonce=-2024731785

token=aBDXjjilmuIfmO3nzLXWLENQfv3gnHIwQbeFZWLQsquBES4ntrh0UNg6PJNVlHf3sApq9mYUvNgjooldlDmK4Ahh6pme8uXdoJ%2beFEU84Fk%3d

dkey=12345678

 

在命令行里面是可以解密出来,但在HTTPRequest事件里就只返回空值

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:扫码登录.rar

[此贴子已经被作者于2019/11/27 14:45:54编辑过]

--  作者:yellow
--  发布时间:2019/11/27 15:08:00
--  

呵呵,问题找到了。

原来接收的Token参数不需再要做urldecode转换了。直接用

loginid = DecryptText(token,nonce,Vars("dkey"))

而非示例中的

loginid = DecryptText(urldecode(token),nonce,Vars("dkey"))

如果DecryptText函数有错误值返回就好了,不用那么费神。