网络编程
位置:首页>> 网络编程>> JavaScript>> 一个不错的javascript加密解密算法源码

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

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

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

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

写了一整天了,这个代码用于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());
}


 

0
投稿

猜你喜欢

  • 在很多语言的学习中,“事件”都是一个比较难理解,但是又是一个很重要的概念。javascript中的事件处理也是一样,正因为有了事件处理,才会
  • oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。正因为快照是一个主表的查询子集,使用快照可
  • 关于浏览器的最离奇的统计结果之一就是Internet Explorer 版本6,7和8共存。截至本文,Internet Explorer各个
  • 做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而
  • 环境Laravel 5.4原理在Laravel中,门面为应用服务容器中绑定的类提供了一个&ldquo;静态&rdquo;接口
  • 可以在Mac OS X 10.2.x(“Jaguar”)和以上版本上Mac OS X使用二进制安装软件包的PKG格式代替二进制分发版来安装M
  • 非常好的边框样式设置工具,使用该工具您可以很方便的为DIV设置简单的边框样式,如果放在DW中会更好。会制作DW插件的高手,请帮忙制作成DW插
  • 好了,下面我们看看如何在服务器上生成.m3u文件并下传到客户端的:<%dim choose,path,mydb,myset,
  • 一.设置客户端网络实用工具点击“开始”-“程序”,在“Microsoft SQL Server”菜单中选择“客户端网络实用工具”。在“别名”
  • 在封装自己的FileSystemObject库的时候,测试的时候发现在文件夹或文件很多的时候,效率很低,显示一个文件夹需要2秒甚至更多,这让
  • 之前有看过一个博文写的是白社会的设计很好但运营却有些遭,因为对每一个WebGame的推出时间把握不准,会有几个应用同时上线造成影响力的冲突,
  • 在Microsoft OfficeAccess和 Microsoft OfficeExcel之间存在多种交换数据的方法。若要将Access中
  • 数组去重复和数组排序'数组名次 Function Sort(ary,stra) KeepChecking =&n
  • 本XML系列教程将分三部分发布,到最后一期我们将拥有一个功能全面,更加友好的XML菜单。本教程这个第一期涉及到了一些XML的基础知识。大家都
  • 经过漫长的等待,近日,微软终于发布了Silverlight 2正式版的发布不仅让微软有了更多和Flash叫板的机会,同时也将RIA(Rich
  • 计是一个输入-输出的过程,因为首先有用户的需求,客户的项目才有设计的产生,设计是带有目的性和市场行为的,当然也有一部分的创造性设计,仅仅为了
  • 原文:http://research.microsoft.com/~helenw/papers/subspace.pdfwindow.nam
  •  在 ASP 的内建对象中除了用于发送、接收和处理数据的对象外,还有一些非常实用的代表 Active Server 应用程序和单个
  • 通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割
  • 如何在数据库中限制检索行数?为了照顾显示器屏幕的大小,使检索结果更整齐明了一些,请问,可以控制数据库的检索行数吗?  &
手机版 网络编程 asp之家 www.aspxhome.com