資源簡介
用于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?????????????{
????????????????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
- 上一篇:c#連接sql,簡易增刪改查
- 下一篇:源代碼行數統計工具含C#源碼
評論
共有 條評論