admin 管理员组

文章数量: 1184232


2024年12月28日发(作者:pathinfo的四层目录如何变成三层)

本帖最后由 小平 于 2013-6-22 10:05 编辑

#region DES加密解密

///

/// DES加密

///

/// 待加密字串

/// 32位Key值

/// 加密后的字符串

public string DESEncrypt(string strSource)

{

return DESEncrypt(strSource, DESKey);

}

public string DESEncrypt(string strSource, byte[] key)

{

SymmetricAlgorithm sa = ();

= key;

= ;

g = ;

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, Encryptor(),

);

byte[] byt = es(strSource);

(byt, 0, );

inalBlock();

();

return 64String(y());

}

///

/// DES解密

///

/// 待解密的字串

/// 32位Key值

/// 解密后的字符串

public string DESDecrypt(string strSource)

{

return DESDecrypt(strSource, DESKey);

}

public string DESDecrypt(string strSource, byte[] key)

{

SymmetricAlgorithm sa = ();

= key;

= ;

g = ;

ICryptoTransform ct = Decryptor();

byte[] byt = se64String(strSource);

MemoryStream ms = new MemoryStream(byt);

CryptoStream cs = new CryptoStream(ms, ct, );

StreamReader sr = new StreamReader(cs, e);

return End();

}

#endregion

#region 一个用hash实现的加密解密方法

///

/// 加密

///

///

///

public static string EncryptStrByHash(string src)

{

if ( == 0)

{

return "";

}

byte[] HaKey = es((src

"Test").ToCharArray());

+

byte[] HaData = new byte[20];

HMACSHA1 Hmac = new HMACSHA1(HaKey);

CryptoStream cs = new CryptoStream(, Hmac,

);

try

{

(HaData, 0, );

}

finally

{

();

}

string HaResult

64String().Substring(0, 16);

byte[] RiKey

es(Array());

byte[] RiDataBuf

es(Array());

byte[] EncodedBytes = { };

MemoryStream ms = new MemoryStream();

RijndaelManaged rv = new RijndaelManaged();

cs = new CryptoStream(ms, Encryptor(RiKey,

=

=

=

RiKey),

);

try

{

(RiDataBuf, 0, );

inalBlock();

EncodedBytes = y();

}

finally

{

();

();

}

return HaResult + 64String(EncodedBytes);

}

///

/// 解密

///

///

///

public static string DecrypStrByHash(string src)

{

if ( < 40) return "";

byte[] SrcBytes = se64String(ing(16));

byte[] RiKey = es(ing(0,

16).ToCharArray());

byte[] InitialText = new byte[];

RijndaelManaged rv = new RijndaelManaged();

MemoryStream ms = new MemoryStream(SrcBytes);

CryptoStream cs = new CryptoStream(ms, Decryptor(RiKey,

RiKey), );

try

{

(InitialText, 0, );

}

finally

{

();

();

}

Builder Result = new Builder();

for (int i = 0; i < ; ++i) if (InitialText

> 0)

((char)InitialText);

return ng();

}

///

/// 对加密后的密文重新编码,如果密文长>16,则去掉前16个字符,如果长度小于16,

返回空字符串

///

///

///

public string ReEncryptStrByHash(string s)

{

string e = tStrByHash(s);

return (( > 16) ? ing(16) : "");

}

#endregion

#region Md5加密,生成16位或32位,生成的密文都是大写

public static string Md5To16(string str)

{

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

string t2

ng(eHash(es(str)),

8);

=

4,

t2 = e("-", "");

return t2;

}

////

/// MD5 32位加密

///

///

///

public static string Md5To32(string str)

{

string pwd = "";

MD5 md5 = ();

byte[] s = eHash(es(str));

for (int i = 0; i < ; i++)

{

pwd = pwd + ng("X");

}

return pwd;

}

#endregion

#region 3DES加密解密

public string Encrypt3DES(string str)

{

//密钥

string sKey = "wyw308";

// //矢量,可为空

string sIV = "scf521";

// //构造对称算法

SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();

ICryptoTransform ct;

MemoryStream ms;

CryptoStream cs;

byte[] byt;

= se64String(sKey);

= se64String(sIV);

= ;

g = 7;

ct = Encryptor(, );

byt = es(str);

ms = new MemoryStream();

cs = new CryptoStream(ms, ct, );

(byt, 0, );

inalBlock();

();

return 64String(y());

}

///

/// 带指定密钥和矢量的3DES加密

///

///

///

///

///

public string Encrypt3DES(string str, string sKey, string sIV)

{

SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();

ICryptoTransform ct;

MemoryStream ms;

CryptoStream cs;

byte[] byt;

= se64String(sKey);

= se64String(sIV);

= ;

g = 7;

ct = Encryptor(, );

byt = es(str);

ms = new MemoryStream();

cs = new CryptoStream(ms, ct, );

(byt, 0, );

inalBlock();

();

return 64String(y());

}

//解密

public string Decrypt3DES(string Value)

{

string sKey = "wyw308";

string sIV = "scf521";

SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();

ICryptoTransform ct;

MemoryStream ms;

CryptoStream cs;

byte[] byt;

= se64String(sKey);

= se64String(sIV);

= ;

g = 7;

ct = Decryptor(, );

byt = se64String(Value);

ms = new MemoryStream();

cs = new CryptoStream(ms, ct, );

(byt, 0, );

inalBlock();

();

return ing(y());

}

///

/// 带指定密钥和矢量的3DES解密

///

///

///

///

///

public string Decrypt3DES(string str, string sKey, string sIV)

{

SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();

ICryptoTransform ct;

MemoryStream ms;

CryptoStream cs;

byte[] byt;

= se64String(sKey);

= se64String(sIV);

= ;

g = 7;

ct = Decryptor(, );

byt = se64String(str);

ms = new MemoryStream();

cs = new CryptoStream(ms, ct, );

(byt, 0, );

inalBlock();

();

return ing(y());

}

#endregion

#region 一个简单的加密解密方法,只支持英文

public static string EnCryptEnStr(string str) //倒序加1加密

{

byte[] by = new byte[];

for (int i = 0;

i <= - 1;

i++)

{

by = (byte)((byte)str + 1);

}

str = "";

for (int i = - 1;

i >= 0;

i--)

{

str += ((char)by).ToString();

}

return str;

}

public static string DeCryptEnStr(string str) //顺序减1解码

{

byte[] by = new byte[];

for (int i = 0;

i <= - 1;

i++)

{

by = (byte)((byte)str - 1);

}

str = "";

for (int i = - 1;

i >= 0;

i--)

{

str += ((char)by).ToString();

}

return str;

}

#endregion

#region 一个简单的加密解密方法,在上一个的基础上支持中文

public static string EnCryptCnStr(string str)

{

string htext = ""; // blank text

for (int i = 0; i < ; i++)

{

htext = htext + (char)(str + 10 - 1 * 2);

}

return htext;

}

public static string DeCryptCnStr(string str)

{

string dtext = "";

for (int i = 0; i < ; i++)

{

dtext = dtext + (char)(str - 10 + 1 * 2);

}

return dtext;

}

#endregion

#region Url地址编码解码

///

/// 编码Url地址

///

///

///

public static string UrlEncode(string url)

{

byte[] mByte = null;

mByte = oding("GB2312").GetBytes(url);

return ode(mByte);

}

///

/// 解码Url地址

///

///

///

public static string UrlDecode(string url)

{

return ode(url,

oding("GB2312"));

}

#endregion


本文标签: 加密 方法 密文 个字符 编码