using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Security.Cryptography;namespace ConsoleApplication3
{
class Program
{
//数据流向字符串的转换
private static string getString(byte[] bytes)
{ if (bytes == null || bytes.Length == 0) throw new ArgumentException("bytes [] 参数出错"); StringBuilder hexString = new StringBuilder(2 * bytes.Length); for (int i = 0; i < bytes.Length; i++)
hexString.AppendFormat("{0:X2}", bytes[i]); return hexString.ToString(); } //字符串向数据流的转换
private static byte[] getStreem(string strHexString)
{ int len = strHexString.Length;
if ((len % 2) != 0)
throw new Exception("HexString 字符出错!!"); int byteLen = len / 2; byte[] bytes = new byte[byteLen]; for (int i = 0; i < byteLen; i++)
{
bytes[i] = Convert.ToByte(strHexString.Substring(i * 2, 2), 16);
} return bytes;
}
//加密
private static string addkey(string str)
{ MemoryStream merStream = new MemoryStream();
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
CryptoStream cry = new CryptoStream(merStream, des.CreateEncryptor(), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cry);
sw.Close();
byte[] buffer = merStream.ToArray();
merStream.Close();
return getString(buffer);
merStream.Close();
des.Clear(); }
//解密
private static string remove(string str)
{ byte[] streem = getStreem(str);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream mes = new MemoryStream(streem);
CryptoStream crystreem = new CryptoStream(mes, des.CreateEncryptor(), CryptoStreamMode.Read);
StreamReader streaR = new StreamReader(crystreem);
;
return streaR.ReadLine();
mes.Close();
streaR.Dispose();
}
static void Main(string[] args)
{ string aa = "huangnboo";
//Console.WriteLine(aa);
//Console.WriteLine(getString( getStreem(aa)));
string bb = addkey(aa);
Console.WriteLine(bb);
Console.WriteLine(remove(bb));
}
}
}
解密出来的是乱码!
我估计问题出在 //字符串向数据流的转换 -----------这方法中!
help
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Security.Cryptography;namespace ConsoleApplication3
{
class Program
{
//数据流向字符串的转换
private static string getString(byte[] bytes)
{ if (bytes == null || bytes.Length == 0) throw new ArgumentException("bytes [] 参数出错"); StringBuilder hexString = new StringBuilder(2 * bytes.Length); for (int i = 0; i < bytes.Length; i++)
hexString.AppendFormat("{0:X2}", bytes[i]); return hexString.ToString(); } //字符串向数据流的转换
private static byte[] getStreem(string strHexString)
{ int len = strHexString.Length;
if ((len % 2) != 0)
throw new Exception("HexString 字符出错!!"); int byteLen = len / 2; byte[] bytes = new byte[byteLen]; for (int i = 0; i < byteLen; i++)
{
bytes[i] = Convert.ToByte(strHexString.Substring(i * 2, 2), 16);
} return bytes;
}
//加密
private static string addkey(string str)
{ MemoryStream merStream = new MemoryStream();
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
CryptoStream cry = new CryptoStream(merStream, des.CreateEncryptor(), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cry);
sw.Close();
byte[] buffer = merStream.ToArray();
merStream.Close();
return getString(buffer);
merStream.Close();
des.Clear(); }
//解密
private static string remove(string str)
{ byte[] streem = getStreem(str);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream mes = new MemoryStream(streem);
CryptoStream crystreem = new CryptoStream(mes, des.CreateEncryptor(), CryptoStreamMode.Read);
StreamReader streaR = new StreamReader(crystreem);
;
return streaR.ReadLine();
mes.Close();
streaR.Dispose();
}
static void Main(string[] args)
{ string aa = "huangnboo";
//Console.WriteLine(aa);
//Console.WriteLine(getString( getStreem(aa)));
string bb = addkey(aa);
Console.WriteLine(bb);
Console.WriteLine(remove(bb));
}
}
}
解密出来的是乱码!
我估计问题出在 //字符串向数据流的转换 -----------这方法中!
help
{
MemoryStream ms = new MemoryStream();
CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(encStream);
sw.WriteLine(PlainText);
sw.Close();
encStream.Close();
byte[] buffer = ms.ToArray();
ms.Close();
return buffer;
} public static string Decrypt(byte[] CypherText, SymmetricAlgorithm key)
{
MemoryStream ms = new MemoryStream(CypherText);
CryptoStream encStream = new CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(encStream);
string val = sr.ReadLine();
sr.Close();
encStream.Close();
ms.Close();
return val;
}
//数据流向字符串的转换
private static string getString(byte[] bytes)
{
if (bytes == null || bytes.Length == 0)
throw new ArgumentException("bytes [] 参数出错");
return System.Text.Encoding.Default.GetString(bytes);
}
//数据流向字符串的转换
private static string getString(byte[] bytes)
{
if (bytes == null || bytes.Length == 0)
throw new ArgumentException("bytes [] 参数出错");
return System.Text.Encoding.Default.GetString(bytes);
} 仍然是有问题
/// <summary>
/// DES加密
/// </summary>
/// <param name="text"></param>
/// <param name="key"></param>
/// <param name="iv"></param>
/// <returns></returns>
public static string DESEncrypt(string text, ref string key,ref string iv)
{
string desStr;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
key = Convert.ToBase64String(des.Key);
iv = Convert.ToBase64String(des.IV);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateEncryptor(), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cryptoStream);
sw.Write(text);
sw.Close();
cryptoStream.Close();
desStr = Convert.ToBase64String(memoryStream.ToArray());
memoryStream.Close();
return desStr;
} /// <summary>
/// DES解密
/// </summary>
/// <param name="text"></param>
/// <param name="key"></param>
/// <param name="iv"></param>
/// <returns></returns>
public static string DESDecrypt(string text, string key, string iv)
{
string desStr;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = Convert.FromBase64String(key);
des.IV = Convert.FromBase64String(iv);
MemoryStream memoryStream = new MemoryStream(Convert.FromBase64String(text));
CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateDecryptor(), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cryptoStream);
desStr = sr.ReadToEnd();
sr.Close();
cryptoStream.Close();
memoryStream.Close();
return desStr;
}