Flash本地加密的实现

2008-04-02 10:40:29来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


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

  



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

  



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

  



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

  



  据个例子:

  



  "abc"的md5是900150983cd24fb0d6963f7d28e17f72

  "abb"的md5是ea01e5fd8e4d8832825acdd20eac5104

  



  为什么说不可逆呢?

  



  据个例子

  



  问题:1000是由什么数字相加而成的呢?

  答案是不知道~

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

  



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

  



  des函数的定义是这样的

  des ("密码", "加密文本", 模式)

  



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

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

  



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

  



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

  



  

  

  
/*

  E-mail: tsxy@21cn.com

  Moon.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]

  


  


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Flash动画制作技巧:小谈头发飘逸动画制作

下一篇: 三维全景的行业应用