您的位置:首页 > 编程语言 > C#

C#加密解密

2015-06-17 14:48 555 查看
出处:/article/7127548.html

1、方法一 (不可逆加密)



public string EncryptPassword(string PasswordString,string PasswordFormat )

{

string encryptPassword = null;

if (PasswordFormat="SHA1")

{

encryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"SHA1");

}

elseif (PasswordFormat="MD5")

{

encryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"MD5");

}

return encryptPassword ;

}

2、方法二 (可逆加密)



public interface IBindesh

{

string encode(string str);

string decode(string str);

}

public class EncryptionDecryption : IBindesh

{

public string encode(string str)

{

string htext = "";

for ( int i = 0; i < str.Length; i++)

{

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

}

return htext;

}

public string decode(string str)

{

string dtext = "";

for ( int i=0; i < str.Length; i++)

{

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

}

return dtext;

}

3、方法三 (可逆加密)



const string KEY_64 = "VavicApp";//注意了,是8个字符,64位

const string IV_64 = "VavicApp";

public string Encode(string data)

{

byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);

byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

int i = cryptoProvider.KeySize;

MemoryStream ms = new MemoryStream();

CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

StreamWriter sw = new StreamWriter(cst);

sw.Write(data);

sw.Flush();

cst.FlushFinalBlock();

sw.Flush();

return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);

}

public string Decode(string data)

{

byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);

byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

byte[] byEnc;

try

{

byEnc = Convert.FromBase64String(data);

}

catch

{

return null;

}

DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

MemoryStream ms = new MemoryStream(byEnc);

CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);

StreamReader sr = new StreamReader(cst);

return sr.ReadToEnd();

}

4、MD5不可逆加密 (32位加密)



public string GetMD5(string s, string _input_charset)

{

/**//// <summary>

/// 与ASP兼容的MD5加密算法

/// </summary>

MD5 md5 = new MD5CryptoServiceProvider();

byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s));

StringBuilder sb = new StringBuilder(32);

for (int i = 0; i < t.Length; i++)

{

sb.Append(t[i].ToString("x").PadLeft(2, '0'));

}

return sb.ToString();

}

(16位加密)



public static string GetMd5Str(string ConvertString)

{

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);

t2 = t2.Replace("-", "");

return t2;

}

5、加解文本文件



//加密文件

private static void EncryptData(String inName, String outName, byte[] desKey, byte[] desIV)

{

//Create the file streams to handle the input and output files.

FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);

FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);

fout.SetLength(0);

//Create variables to help with read and write.

byte[] bin = new byte[100]; //This is intermediate storage for the encryption.

long rdlen = 0; //This is the total number of bytes written.

long totlen = fin.Length; //This is the total length of the input file.

int len; //This is the number of bytes to be written at a time.

DES des = new DESCryptoServiceProvider();

CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);

//Read from the input file, then encrypt and write to the output file.

while (rdlen < totlen)

{

len = fin.Read(bin, 0, 100);

encStream.Write(bin, 0, len);

rdlen = rdlen + len;

}

encStream.Close();

fout.Close();

fin.Close();

}

//解密文件

private static void DecryptData(String inName, String outName, byte[] desKey, byte[] desIV)

{

//Create the file streams to handle the input and output files.

FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);

FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);

fout.SetLength(0);

//Create variables to help with read and write.

byte[] bin = new byte[100]; //This is intermediate storage for the encryption.

long rdlen = 0; //This is the total number of bytes written.

long totlen = fin.Length; //This is the total length of the input file.

int len; //This is the number of bytes to be written at a time.

DES des = new DESCryptoServiceProvider();

CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(desKey, desIV), CryptoStreamMode.Write);

//Read from the input file, then encrypt and write to the output file.

while (rdlen < totlen)

{

len = fin.Read(bin, 0, 100);

encStream.Write(bin, 0, len);

rdlen = rdlen + len;

}

encStream.Close();

fout.Close();

fin.Close();

}

6.



using System;

using System.Collections.Generic;

using System.Text;

using System.Security.Cryptography;

using System.IO;

namespace Component

{

public class Security

{

public Security()


{

}

//默认密钥向量

private static byte[] Keys =

{ 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

/**//**//**//// <summary>

/// DES加密字符串

/// </summary>

/// <param name="encryptString">待加密的字符串</param>

/// <param name="encryptKey">加密密钥,要求为8位</param>

/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>

public static string EncryptDES(string encryptString, string encryptKey)

{

try

{

byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));

byte[] rgbIV = Keys;

byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);

DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();

MemoryStream mStream = new MemoryStream();

CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);

cStream.Write(inputByteArray, 0, inputByteArray.Length);

cStream.FlushFinalBlock();

return Convert.ToBase64String(mStream.ToArray());

}

catch

{

return encryptString;

}

}

/**//**//**//// <summary>

/// DES解密字符串

/// </summary>

/// <param name="decryptString">待解密的字符串</param>

/// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>

/// <returns>解密成功返回解密后的字符串,失败返源串</returns>

public static string DecryptDES(string decryptString, string decryptKey)

{

try

{

byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);

byte[] rgbIV = Keys;

byte[] inputByteArray = Convert.FromBase64String(decryptString);

DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();

MemoryStream mStream = new MemoryStream();

CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);

cStream.Write(inputByteArray, 0, inputByteArray.Length);

cStream.FlushFinalBlock();

return Encoding.UTF8.GetString(mStream.ToArray());

}

catch

{

return decryptString;

}

}

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: