private static string _text;
/// <summary>
/// 要加解密的字符串
/// </summary>
public static string Text
{
set { CryptoString1._text = value; }
}
private static string _key = "langweix";
/// <summary>
/// 加密的密钥
/// </summary>
public static string Key
{
set { CryptoString1._key = value; }
}
/// <summary>
/// DES加密
/// </summary>
/// <returns></returns>
public static string DESEncrypt0String()
{
//将密钥Key转换为字节数组
byte[] iKey = Encoding.Default.GetBytes(_key);
//将传递的字符创转化为字节数组
byte[] iText = Encoding.Default.GetBytes(_text);
//创建一个内存流
MemoryStream ms = new MemoryStream();
//创建一个加密对象实例
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = iKey;
des.Mode = CipherMode.ECB;//选择加密模式为ECB模式
des.Padding = PaddingMode.PKCS7;
//使用密钥Key创建一个加密流
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
//将字节数组写入加密流并清空缓冲区
cs.Write(iText, 0, iText.Length);
cs.FlushFinalBlock();
//得到加密后的字节数组
byte[] EncryptString = ms.ToArray();
//将加密后的字节数组转化为字符串并返回
return Convert.ToBase64String(EncryptString);
} /// <summary>
/// DES解密
/// </summary>
/// <returns></returns>
public static string DESDecryptoString()
{
//将密钥Key转换为字节数组
byte[] iKey = Encoding.Default.GetBytes(_key);
//将待解密的字符串转化为字节数组
byte[] iText = Encoding.Default.GetBytes(_text);
//创建一个内存流
MemoryStream ms = new MemoryStream();
//创建一个加密对象实例
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = iKey;
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.PKCS7;
//使用密钥创建一个解密流
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
//将字节数组写入解密流
cs.Write(iText, 0, iText.Length);
//cs.FlushFinalBlock();
//得到解密后的字节数组
byte[] DecryptString = ms.ToArray();
//将解密后的字节数组转化为字符串并返回
return Convert.ToBase64String(DecryptString);
}
我纠结了~~~~
我这个用的是ECB模式的加解密、
只要Key就行。和CBC模式不同。CBC模式需要key和初始化向量IV
我这个用的是ECB模式的加解密、
只要Key就行。和CBC模式不同。CBC模式需要key和初始化向量IV
但是我这样写加密完解密出来的数据不正确……而且我现在只能用这种加密方式。~!要不谁给我发个RSA加解密的列子也行。
解决方案 »
- 各位大侠们,请问libsvm的C#版本如何使用?
- GridView中每行后面有个LinkButton的编辑按钮,怎么提取主键
- winform htmleditor 会自动生成 html代码
- 如何将Linq to Sql自动生成的类中的扩展方法怎么实现
- 新手问题帮忙看个代码
- 如何把这VB代码转为C#?
- 如何获取当前表中行的值?
- treeview接点的保存
- 为什么要重新上传web.config才可以
- 关于datagrid列标题的问题?
- asp.net Excel 上传后另存格式 XlFileFormat.xlUnicodeText
- C# 如何在Excel文件中生成一个曲线图,并导出,做过C# OFFICE自动化方面的来教教我把
/// DES加密字符串
/// </summary>
/// <param name="sInputString">将要加密的String</param>
/// <param name="sKey">密钥</param>
/// <returns>加密后的字符串</returns>
public string EncryptString(string sInputString, string sKey)
{
byte[] data = Encoding.UTF8.GetBytes(sInputString);
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
ICryptoTransform desencrypt = DES.CreateEncryptor();
byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
return BitConverter.ToString(result);
}
/// <summary>
/// DES解密字符串
/// </summary>
/// <param name="sInputString">将要解密的String</param>
/// <param name="sKey">密钥</param>
/// <returns>解密后的字符串</returns>
public string DecryptString(string sInputString, string sKey)
{
string[] sInput = sInputString.Split("-".ToCharArray());
byte[] data = new byte[sInput.Length];
for (int i = 0; i < sInput.Length; i++)
{
data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);
}
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
ICryptoTransform desencrypt = DES.CreateDecryptor();
byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
return Encoding.UTF8.GetString(result);
}