Flash本地加密

cui19871207

cui19871207

2016-01-29 12:47

Flash本地加密,Flash本地加密

    首先我们来假设一个情况。

  我们要做一个flash,里面存了一段话,只想给知道密码的人看。通常的做法是检测用户的输入是否等于密码,然后显示。但是由于Flash是开放结构,所以swf文件可以反汇编然后看到密码,这时候就可以非法的看到要保护的东西了。

  但是如果通过一个不可逆的算法把密码加密,然后存在swf里面。然后把用户输入的密码也同样加密,然后比对加密以后的字串是否相等就可以了。因为swf里面保存的密码是不可逆的嘛~~

  不可逆的加密算法有很多种,最流行的就是md系列了,现在的是md5。md5可以计算认可字串的特征,然后归结到一个32字节长的字串里面,源字串一点点的改动就会造成特称字串巨大的变化。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/fjc/)

  据个例子:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/fjc/)

  "abc"的md5是900150983cd24fb0d6963f7d28e17f72
  "abb"的md5是ea01e5fd8e4d8832825acdd20eac5104

  为什么说不可逆呢?

  据个例子

  问题:1000是由什么数字相加而成的呢?
  答案是不知道~
  如果说是两个数字,那么我们可以有1+999或者500+500或者……但是三个、四个、直到n个数字呢?也就是说我们不可能知道原来的数字是什么,猜中的机会很小。而md5也是同样的原理,将每个字符的特征值相加再相加,自然就很难猜到原来是什么东西了~

  那么我们有了密码检测了~着时候需要一个可逆的加密算法来处理我们要保存的东西,因为要还原嘛~~这类算法很多,我选择了较流行的des算法

  des函数的定义是这样的
  des ("密码", "加密文本", 模式)

  模式=1的时候,des返回加密后的值
  模式=0的时候,des返回解密后的值

  但是由于des返回的值不一定是通用字符集里面的,所以我就做了一点处理,将des的值转成16进制字串,防止错误的产生。

  道理很明白了,怎么用呢~~首先,我们来创建密码的md5值,使用下面的函数:

[color=#6495ED[B]]/*E-mail: tsxy@21cn.comMoon.Blue*/var hexcase = 0;var b64pad  = "";var strsize   = 8; function md5(s){ return binl2hex(core_md5(str2binl(s), s.length * strsize));}function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * strsize));}function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * strsize));}function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }function core_md5(x, len){  x[len 5] |= 0x80 << ((len) % 32);  x[(((len + 64) 9) << 4) + 14] = len;    var a =  1732584193;  var b = -271733879;  var c = -1732584194;  var d =  271733878;  for(var i = 0; i < x.length; i += 16) {    var olda = a;    var oldb = b;    var oldc = c;    var oldd = d;    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);  &nbs

展开更多 50%)
分享

猜你喜欢

Flash本地加密

flash教程
Flash本地加密

解析QQ2004的本地加密技术

电脑入门
解析QQ2004的本地加密技术

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用flash打开本地文件夹

flash教程
用flash打开本地文件夹

照片管家上传的加密照片怎么恢复到本地相册

手机软件 应用软件
照片管家上传的加密照片怎么恢复到本地相册

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

攻防结合!谈Flash的破解与加密大战

flash教程
攻防结合!谈Flash的破解与加密大战

word文档加密怎么让word自动加密

电脑入门
word文档加密怎么让word自动加密

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

ActionScript图文教程(十一)

ActionScript图文教程(十一)

Apusic Application Server1.0中jsp源代码泄漏漏洞

Apusic Application Server1.0中jsp源代码泄漏漏洞
下拉加载更多内容 ↓