flash与asp交互通信信息加密的一个方案。
flash与asp交互通信信息加密的一个方案。
2007-10-23 飞飞 自娱自乐 http://www.
众所同知,flash向服务器端提交数据有两种方法,一个是get,post这两中方式和网页中的表单提交是一样
的原理。它们的方式就不用多说了,他们都是明文发布数据的。在有些场合我们需要把数据进行加加密以后
再提交,比如作一个flash游戏,让玩家玩了以后提交分数,这个分数就应该是加密码的,不然我们用一些
监控程序很容易得到flash提交的地址:例如:http://www./cc.asp?fs=20&name=飞飞,这
个地址中提交了两个数据一个是分数:fs,一个是玩家的名称:name,可能读者要问你那种是用get方法提交
的,用post的就会,其实用post提交能的确是进行了一个编码,但是很容易可以分解开的:
实例查看地址:http://www./43.html
源文件下载:http://www./down.asp?filename=20071023111334.rar&title=flash与asp交互通信信息加密与asp交互通信信息加密
我在作flash迷宫游戏的时候就考虑到一个用户作弊的问题,如果玩获得了flash提交分数的asp地址,就会
在还玩游戏的情况下任意提交分数。当然这是我们不希望看到的。所以要作一些加密的方式来处理。
本人没有读过关于加密的一些知识,只是本人的一个想法。作了一个功能块。我想会有其它更好的方式,我
想一些加密方式和解次方案可以从ajax中获得,我个人认为ajax和flash在与服务器端语言通信方面是相似
的,ajax的技术相对flash要成熟许多。ajax本人也正在研究中。
加密原理:
1.生成密码字典:asp程序对每个对应加密码的字符(strZD="3,4,5,6,7,8,9,0,1,2,." 要加密的字符用逗
号隔开。)进行md5加密,并从中截取一部为作为该字符对应的加密字符。并生成密码字典
2.生成加密信息:flash通过这个密码字典来加密字符,并把所获得字符复制一份,用特定的规则把两分相
同的数据混淆在一起,成生最终的加密信息。
3.服务器端解密:asp获得加密信息,把他们分开两分,先验证加密信息的完整性,然后解密。
缺点:
密码字典存于flash中,如果破解获得flash源代码,就可以获得密码字典,所以swf文件要用加密软件加密,
保护flash源代码是关健。
一些说明:
所验证加密信息部分:目前只是简单的把"加密字符"追加了一份,asp获得提交的"加密字符",对分来比较
加密信息的完整性.使用者可自行修改:加密信息的完整性
它们分别在:
asp:mi.asp:function GetKey(getZdStr,forMidLen,strRequest)
flash:加密.fla:getKey(strA:String):String中的:return (strRen+strRen);
测试与安装说明:
1>在iis加一个虚拟目录:例如:md5
2>打开"加密.fla"找到:
my_lv.sendAndLoad("http://localhost/md5/test.asp", result_lv, "POST");
把:http://localhost/md5/test.asp,替换test.asp所在虚拟路经
使用说明
注:以下安装目录http://localhost/md5/
1>加密设置参数
打开:const.asp修改以下信息
strZD="3,4,5,6,7,8,9,0,1,2,."
要加密的字符用逗号隔开。
forMidStar=1
每个用md5加密得到值截取的开始位置
forMidLen=13
每个用md5加密得到值截取的长度
2>获得密码字典
运行:http://localhost/md5/getZD.asp
获得密码字典
3>修改flash加密函数
打开"加密.fla"
找到:function getOneKey(strA:String):String
修改:var strKey:String ="获得密码字典"
4>要加密的数字调用
getOneKey(String(要加密的数字))
就可以获得,
5>服务器解密
my_lv.sendAndLoad("http://localhost/md5/test.asp", result_lv, "POST");
把:http://localhost/md5/test.asp,替换test.asp所在虚拟路经
文件说明==============
md5.asp
md5加密函数
mi.asp
要用的生成密码字典及asp解密函数
const.asp
加密设置参数
getZD.asp
获得密码字典
test.asp和加密.fla
|