用web浏览框实现MD5加密

App Inventor中的Web浏览框组件相当于一个浏览器,相对于标准的浏览器来说,虽然它的功能不够完整,但这一组件提供了一个交换字串(webViewString)属性,可以实现app与javaScript之间的数据交换,这在很大程度上拓展了App Inventor的开发能力。

有些应用都涉及到用户身份的识别,需要设置用户注册、登录环节,为了确保用户信息的安全,用户的密码要避免在网络上明文传输,这就需要用到加密算法,如MD5加密。App Inventor没有提供这样的加密功能,但我们可以借助于外来的现成的JavaScript程序实现这一目标,具体方法简介如下。

一、获取并修改MD5的javaScript源码

网上随处可以找到MD5的JavaScript源码,我的代码来自于一位程序员的博客,网址为:http://blog.csdn.net/ibey0nd/article/details/31032653,将页面中的源码复制粘贴到文本编辑器中(我使用sublime),并添加如下代码:

var source = window.AppInventor.getWebViewString();

window.onload =  () => {

vartarget = hex_md5(source);

window.AppInventor.setWebViewString(target);

}

结果如图1所示。

图1 改造MD5的JavaScript源码

将上述文件编辑完成之后,保存为md5.html。

二、创建项目添加组件

创建一个项目,命名为MD5,添加组件,如图2所示,组件的命名及属性设置如表1所示。

图2  在项目中添加组件并设置属性

表1:组件的命名及属性设置

将第1步中编辑好的JavaScript文件(md5.html)上传到项目中,注意,此时如果用手机上AI伴侣进行测试,则手机sd卡的AppInventor/assets文件夹下将出现md5.html文件。

三、编写程序

将开发环境切换到编程视图,编写代码如图3所示。

图3 实现MD5编码的程序

在手机中测试上述程序,结果如图4所示。

图4 上述程序的测试结果

四、存在问题

1、测试结果与手机型号有关

利用两部手机进行测试,在努比亚nx511J上测试成功,但在三星nexus S上测试不成功,输入“qqq”并点击按钮后,返回的仍然是“qqq”,将计时器的计时间隔调整到2000毫秒仍然无法返回正确结果。

2、计时器的作用

计时器的作用是延迟显示网页md5.html的返回结果。在测试过程中修改计时器的计时间隔,从10毫秒到100毫秒,递增幅度为10毫秒,发现当计时间隔小于80毫秒时,返回结果是文本输入框中输入的内容。

(0)

相关推荐