• 大小: 5KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: C#
  • 标签: js  加密  

资源简介

用于js加密加密算法,采用js加密,c#可以解密加密算法,采用js加密,c#可以解密

资源截图

代码片段和文件信息

//***************************************************************************************
// Autor:Tecky
// Date:2008-06-03
// Desc:xxtea 算法的C#加密实现
// e-mail:likui318@163.com
//
//
//***************************************************************************************
using System;

class XXTEA
{
    public static string Encrypt(string source string key)
    {
        System.Text.Encoding encoder = System.Text.Encoding.UTF8;
        //UTF8==>base64==>XXTEA==>base64
        byte[] bytData = encoder.GetBytes(base64Encode(source));
        byte[] bytKey = encoder.GetBytes(key);
        if (bytData.Length == 0)
        {
            return ““;
        }
        return System.Convert.Tobase64String(ToByteArray(Encrypt(ToUInt32Array(bytData true) ToUInt32Array(bytKey false)) false));
    }
    public static string Decrypt(string source string key)
    {
        if (source.Length == 0)
        {
            return ““;
        }
        // reverse
        System.Text.Encoding encoder = System.Text.Encoding.UTF8;
        byte[] bytData = System.Convert.Frombase64String(source);
        byte[] bytKey = encoder.GetBytes(key);

        return base64Decode(encoder.GetString(ToByteArray(Decrypt(ToUInt32Array(bytData false) ToUInt32Array(bytKey false)) true)));
    }

    private static UInt32[] Encrypt(UInt32[] v UInt32[] k)
    {
        Int32 n = v.Length - 1;
        if (n < 1)
        {
            return v;
        }
        if (k.Length < 4)
        {
            UInt32[] Key = new UInt32[4];
            k.CopyTo(Key 0);
            k = Key;
        }
        UInt32 z = v[n] y = v[0] delta = 0x9E3779B9 sum = 0 e;
        Int32 p q = 6 + 52 / (n + 1);
        while (q-- > 0)
        {
            sum = unchecked(sum + delta);
            e = sum >> 2 & 3;
            for (p = 0; p < n; p++)
            {
                y = v[p + 1];
                z = unchecked(v[p] += (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z));
            }
            y = v[0];
            z = unchecked(v[n] += (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z));
        }
        return v;
    }

    private static UInt32[] Decrypt(UInt32[] v UInt32[] k)
    {
        Int32 n = v.Length - 1;
        if (n < 1)
        {
            return v;
        }
        if (k.Length < 4)
        {
            UInt32[] Key = new UInt32[4];
            k.CopyTo(Key 0);
            k = Key;
        }
        UInt32 z = v[n] y = v[0] delta = 0x9E3779B9 sum e;
        Int32 p q = 6 + 52 / (n + 1);
        sum = unchecked((UInt32)(q * delta));
        while (sum != 0)
        {
            e = sum >> 2 & 3;
            for (p = n; p > 0; p--)
            {
                z = v[p - 1];
                y = unchecked(v[p] -= (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z));
            }
            z = v[n];
    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8084  2008-09-01 16:13  xxtea.js

     文件       5154  2008-09-01 16:15  xxtea.cs

     文件       4980  2008-07-23 11:52  jsPoint.htm

----------- ---------  ---------- -----  ----

                18218                    3


评论

共有 条评论