用户名: 密码: 验证码:           网站地图  高级搜索  RSS订阅  收藏本站
您的位置:主页 > 平面设计 > Flash >

如何用as打造自己的密文解码器?

[ 来源:闪吧 | 作者:闪吧 | 更新日期:2008-5-28 09:50:27 | 人气: | 评论 0 条 ]

例如:A到Z到a到z排列成一个环,字母A用字母C代替,字母B则用字母D代替……比如密文“ABC”解码后为“CDE”……那么我们看一下“DjYqf”解码后会是什么呢?
解决思路
首先,我先说一下基本的编程思路:
  1、看一下原文中的“A到Z到a到z排列成一个环,字母A用字母C代替……”我们先不管后面那几句,只看第1句,“A到Z到a到z排列成一个环”那么,编程的第1步已经有了:新建一数组1,元素为A-Z,a-z共52个元素,此数组即为密文数组(Miwen)。
  2、这时我们在看一下后面的那几句“字母A用字母C代替,字母B则用字母D代替……”这样,编程的第二步也有了:按原文提到的字母替换规则,将上面数组(Miwen)中所有元素向前‘移’两位,最前面的两位放到后面,得到一个新数组2,其元素为C-Za-zAB。
  3、这时我们看一下,数组1中的某位置上的元素(密文)的原文就是数组2相同位置上的元素。如数组1中第一个元素是“A”,而数组2中的第一个元素是“C”(即“ZT01”一文中提到的“字母A用字母C代替”……)

jc567.cn


  4、我们只要将A-Z、a-z分别赋值为1-26、27-52。这时解密文时就只须将密文字母所代表的值来对应数组2中的元素即可(如“B”的值是2,那么在数组2中的第2个元素“D”就是“B”的原文……)。
  5、但在Flash中变量不分大小写,也就是说“A”与“a”(“B”与“b”……)代表的是同一变量。不过没关系,我们可以把大写的“A”双拼为“AA”、大写字母“B”双拼为“BB”,这样就与小写字母区分开了。
  6、当然,密文不可能是单一的一个字母,而是一串字母,这样我们就要用到String.substr(字符串截取)函数,并把截取的字母存放到新的数组中,再与数组2中的元素相对应就可得到明文。
  7、将所有Action写在一帧中与写入多帧中得到的效果是一样的(针对本文来说),但我们最好能有这样一个习惯:如没有非凡情况,最好将AS按其所完成的功能分别写入不同的帧中,这样日后修改起来会非常方便。
具体步骤
第1帧中的AS
第1步:定义密文数组Miwen(),元素为A-Z,a-z
1、定义大写字母A-Z的数组Miwen1(),其元素为大写字母A到Z

007网络教程网


miwen1=new Array()
my_i=65
while (my_i<=(65 25)){
miwen1[my_i-65]=String.fromCharCode(my_i)
my_i
}
2、定义小写字母a-z的数组Miwen2()
miwen2=new Array()
my_j=97
while(my_j<=(97 25)){
miwen2[my_j-97]=String.fromCharCode(my_j)
my_j
}
3、将Miwen1与Miwen2联合为Miwen()
miwen=new Array()
miwen=miwen1.concat(miwen2)
4、测试Miwen数组长度与数组内的元素
/*trace(Miwen.length)
 my_z=0
 while(my_z<Miwen.length){
trace(Miwen[my_z])
my_z
 }*/
第2步:建立数组2 Yuanwen(),元素为C-Za-zAB
1、将Miwen数组中的元素‘copy’到Yuanwen1数组中
yuanwen1=new Array()
yuanwen1=yuanwen1.concat(miwen)
2、将Yuanwen1中的元素进行‘移位’
yuanwen_AB=new Array("A","B")
yuanwen=new Array()
yuanwen=yuanwen1.concat(yuanwen_AB)
yuanwen.splice(0,2)
3、测试Yuanwen数组的长度与其元素
/*trace(yuanwen.length) jc567.cn
 my_z=0
 while(my_z<yuanwen.length){
trace(yuanwen[my_z])
my_z
 }*/
第二帧中的AS
第3步:将A-Z,a-z分别赋值为1-26,27-52,但由于Flash中变量不分大小写,所以,大写的“A”双拼为“AA”、大写字母“B”双拼为“BB”,这样就与小写字母区分开了。
1、定义Big_abc()数组,元素为大写字母A-Z,并将大写字母全部‘双拼’,随后为其元素赋与相应的值。
my_i=1
big_abc=new Array()
while(my_i<=26){
big_abc[my_i-1]=String.fromCharCode(64 my_i) String.fromCharCode(64 my_i)
set (big_abc[my_i-1],my_i)
my_i
}
2、定义Small_abc()数组,元素为小写字母a-z,并为其赋与相应的值。
my_j=1
small_abc=new Array()
while (my_j<=26) {
small_abc[my_j-1]=String.fromCharCode(96 my_j)
set (small_abc[my_j-1],26 my_j)
my_j
}

第三帧中的AS
第4步:将密文(myText)分别拆分为单个字母并放入myTexts()数组内(注重大写字母要‘双拼’),并用Mingwen_num()数组存储myTexts()数组元素所对应的数值。最后用Mingwen_num数组元素与Yuanwen()数组内的元素相对应即可得到明文。 文章来源于www.hot007.com
mytext = "uuuDjYqfcpalyGWG"; //这就是密文了,可以做成输入文本
//将密文拆分为单个字母并放入myTexts()数组内
mytexts = new Array();
mylength = mytext.length;
my_i = 1;
while (my_i<=mylength) {
mytexts[my_i-1] = mytext.substr(my_i-1, 1);
my_i ;
}
//将大写字母进行‘双拼’
mycode = mytexts.join("");
mystr = new String(mycode);
myteststr = new String("a");
my_i = 1;
while (my_i<=mylength) {
mytexts[my_i-1] = mytext.substr(my_i-1, 1);
if ((mystr.charCodeAt(my_i-1))<(myteststr.charCodeAt(0))) {
mytexts[my_i-1] = mytexts[my_i-1] mytexts[my_i-1];
}
//trace(mytexts[my_i-1])
my_i ;
}
mingwen_num = new Array(); //定义mingwen_num数组
//用Mingwen_num数组元素与Yuanwen()数组内的元素相对应即可得到明文。
mingwen = new Array();
my_i = 1;
while (my_i<=mylength) {
mingwen_num[my_i-1] = eval(mytexts[my_i-1]);
my_i ; 复制于jc567.cn
}
my_i = 1;
while (my_i<=mylength) {
mingwen[my_i-1] = yuanwen[mingwen_num[my_i-1]-1];
my_i ;
}
mymingwen = mingwen.join("");  //可做为动态文本
trace(mymingwen);
共2页: 上一页 1 [2] 下一页
Tags:如何用as打造自己的密文解码器?
您的评论
用户名: 新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为