一个不错的javascript加密解密算法源码

作者:aasvvv 来源:51js 时间:2010-03-28 13:12:00 

来炫耀一下,谁看得懂我写的加密算法

写了一整天了,这个代码用于ajax提交,要求就是加密后内容不能变得过长,加密解密需要效率高,至于安全性,被抓取的数据无法被破解就可以了,下面的f23.ts可以算是密钥。现在有点不如意的地方就是英文内容加密后,数据长度增加一倍,中文加密不会增加数据长度,对于ajax提交,其实中文字符长度是大大减少了。


对应的服务器端c#版本,15000字加密再解密不用1毫秒。


//网站提交数据专用
public static string s52s = "8ABC7DLO5MN6Z9EFGdeJfghijkHIVrstuvwWSTUXYabclmnopqKPQRxyz01234";
static bool s52t = true;
static int N, N2;
static int[] s52r = new int[128];
static void s52f()
{
    N = s52s.Length;
    N2 = N * N;
    for (var x = 0; x < s52s.Length; x++)
    {
         s52r[(int)s52s[x]] = x;
    }
    s52t = false;
}

public static string s52e(string n)
{
    if (s52t) s52f();
    int l = n.Length, a, x = 0;
    List<char> t = new List<char>(l * 3);
    for (; x < l; x++)
    {
         a = (int)n[x];
         if (a < N2)
         {
              t.Add(s52s[a / N]);
              t.Add(s52s[a % N]);
         }
         else
         {
              t.Add(s52s[a / N2 + 5]);
              t.Add(s52s[(a / N) % N]);
              t.Add(s52s[a % N]);
         }
    }
    string s = new string(t.ToArray());
    return s.Length.ToString().Length + s.Length.ToString() + s;
}

public static string s52d(string n)
{
    if (s52t) s52f();
    int c;
    if (!int.TryParse(n[0].ToString(), out c)) return "";
    if (!int.TryParse(n.Substring(1, c), out c)) return "";
    int x = c.ToString().Length + 1;
    if (n.Length != c + x) return "";
    int nl = n.Length, a;
    List<char> t = new List<char>(nl * 3);
    for (; x < nl; x++)
    {
         a = s52r[(int)n[x]];
         x++;
         if (a < 5)
         {
              c = a * N + s52r[(int)n[x]];
         }
         else
         {
              c = (a - 5) * N2 + s52r[(int)n[x]] * N;
              x++;
              c += s52r[(int)n[x]];
         }
         t.Add((char)c);
    }
    return new string(t.ToArray());
}


 

标签:加密,解密,算法,源码,javascript
0
投稿

猜你喜欢

  • 如何用Frontpage下载别人的网站模板

    2008-03-03 12:58:00
  • 一个Access数据库数据传递的实例方法

    2008-11-28 16:24:00
  • SQL Server和Oracle并行处理方法对比

    2009-01-20 15:48:00
  • Mootools 1.2教程(16)——排序类和方法简介

    2008-12-10 14:18:00
  • 仿淘宝首页商品分类列表效果

    2009-01-22 13:39:00
  • Windows XP操作系统下的MYSQL安装过程

    2008-11-24 12:52:00
  • CSS Frameworks的概念

    2008-01-23 18:41:00
  • 浏览器 cookie 限制

    2008-05-23 13:09:00
  • 数据库基础:MySQL 添加用户的两种方法

    2009-05-07 14:26:00
  • 9个个人网站制作诀窍

    2007-12-13 11:36:00
  • 导航设计与信息架构

    2008-01-13 22:08:00
  • rs.open与conn.execute详细解释

    2008-07-03 12:54:00
  • 前端优化,让你的网页显示的更快更流畅

    2009-06-08 13:09:00
  • 怎样从旧版本SQL Server中重新存储数据

    2009-01-15 13:23:00
  • 960 Grid System 基本原理及使用方法

    2009-02-28 13:35:00
  • 你是真正的用户体验设计者吗? Ⅱ

    2008-03-21 12:30:00
  • asp解决fso.ReadAll提示输入超出了文件尾的错误

    2008-01-30 21:40:00
  • 怎么样才能抓住用户?

    2008-10-20 12:10:00
  • 如何用SQLMail建立一个电子刊物自动处理系统?

    2010-06-13 14:36:00
  • 新Orcas语言特性:扩展方法

    2007-09-23 12:49:00
  • asp之家 网络编程 m.aspxhome.com