C# DES加密解密

水目 2014-01-28 10:10:13
照着网上的谢了两个加密解密的方法

加密之后解密不出来,请各位给讲解下加密解密的原理

顺带帮我修改下代码

DES操作类

/// <summary>
/// key和IV都用了key的值
/// </summary>
public static class DES
{
private static string key = "12345678";

//加密
public static string Encrypt(string text)
{
return Encrypt(text, key);
}

public static string Encrypt(string text, string key)
{
DESCryptoServiceProvider DESProvider = new DESCryptoServiceProvider();

byte[] textbuffer = Encoding.Default.GetBytes(text);
byte[] keybuffer = Encoding.Default.GetBytes(key);

DESProvider.Key = keybuffer;
DESProvider.IV = keybuffer;

System.IO.MemoryStream mStream = new System.IO.MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DESProvider.CreateEncryptor(), CryptoStreamMode.Write);
cStream.Write(textbuffer, 0, textbuffer.Length);
cStream.FlushFinalBlock();

StringBuilder newtext = new StringBuilder();
foreach (byte b in mStream.ToArray())
{
newtext.AppendFormat("{0:X2}", b);
}
return newtext.ToString();

}


//解密
public static string Decrypt(string text)
{
return Encrypt(text, key);
}

public static string Decrypt(string text, string key)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] textByteArray = new byte[text.Length / 2];

for (int x = 0; x < text.Length / 2; x++)
{
int i = (Convert.ToInt32(text.Substring(x * 2, 2), 16));
textByteArray[x] = (byte)i;
}

des.Key = Encoding.Default.GetBytes(key);
des.IV = Encoding.Default.GetBytes(key);

System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);
cs.Write(textByteArray, 0, textByteArray.Length);
cs.FlushFinalBlock();
return System.Text.Encoding.Default.GetString(ms.ToArray());

}
}



调用
加密

解密
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
水目 2014-01-28
  • 打赏
  • 举报
回复
引用 1 楼 KumaPower 的回复:
http://www.codeproject.com/Articles/19538/Encrypt-Decrypt-String-using-DES-in-C
引用 2 楼 rtdb 的回复:

       //解密
        public static string Decrypt(string text)
        {
            return Encrypt(text, key);
        }
解密方法你调用成加密了。换一下再试。
谢谢二位了,不仅仅是2楼说的错误,其他的地方也有错误。 不过已经解决,谢谢二位了
rtdb 2014-01-28
  • 打赏
  • 举报
回复

       //解密
        public static string Decrypt(string text)
        {
            return Encrypt(text, key);
        }
解密方法你调用成加密了。换一下再试。

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧