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

md5加密解密 c#实现

2008-06-19 14:41 405 查看
using System;

using System.Collections.Generic;

using System.Text;

using System.Security.Cryptography;

using System.IO;

namespace GetPassWord

{

/// <summary>

///DES加解密类

/// </summary>

public class Encryptclass

{

/// <summary>

/// DES解密字符串

/// </summary>

/// <returns>解密后的字符串</returns>

public string Decrypt(string name, string name2, string password)

{

string cipher;

char[] key = new char[8];

if (name.Length > 8)

name = name.Remove(8);

name.CopyTo(0, key, 0, name.Length);

char[] iv = new char[8];

if (name2.Length > 8)

name2 = name2.Remove(8);

name2.CopyTo(0, iv, 0, name2.Length);

if (password == null)

{

throw new ArgumentNullException("password");

}

SymmetricAlgorithm serviceProvider = new DESCryptoServiceProvider();

serviceProvider.Key = Encoding.ASCII.GetBytes(key);

serviceProvider.IV = Encoding.ASCII.GetBytes(iv);

byte[] contentArray = Convert.FromBase64String(password);

MemoryStream memoryStream = new MemoryStream(contentArray);

CryptoStream cryptoStream = new CryptoStream(memoryStream, serviceProvider.CreateDecryptor(), CryptoStreamMode.Read);

StreamReader streamReader = new StreamReader(cryptoStream);

cipher = streamReader.ReadToEnd();

streamReader.Dispose();

cryptoStream.Dispose();

memoryStream.Dispose();

serviceProvider.Clear();

return cipher;

}

/// <summary>

/// DES加密字符串

/// </summary>

/// <returns>加密后的字符串</returns>

public string Encrypt(string name, string name2, string password)

{

string cipher;

char[] key = new char[8];

if (name.Length > 8)

name = name.Remove(8);

name.CopyTo(0, key, 0, name.Length);

char[] iv = new char[8];

if (name2.Length > 8)

name2 = name2.Remove(8);

name2.CopyTo(0, iv, 0, name2.Length);

if (password == null)

{

throw new ArgumentNullException("password");

}

SymmetricAlgorithm serviceProvider = new DESCryptoServiceProvider();

serviceProvider.Key = Encoding.ASCII.GetBytes(key);

serviceProvider.IV = Encoding.ASCII.GetBytes(iv);

MemoryStream memoryStream = new MemoryStream();

CryptoStream cryptoStream = new CryptoStream(memoryStream, serviceProvider.CreateEncryptor(), CryptoStreamMode.Write);

StreamWriter streamWriter = new StreamWriter(cryptoStream);

streamWriter.Write(password);

streamWriter.Dispose();

cryptoStream.Dispose();

byte[] signData = memoryStream.ToArray();

memoryStream.Dispose();

serviceProvider.Clear();

cipher = Convert.ToBase64String(signData);

return cipher;

}

}

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