//===================================================================================
public static string Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider(); byte[] buffer1 = new byte[pToDecrypt.Length / 2]; for (int num1 = 0; num1 < (pToDecrypt.Length / 2); num1++)
{
int num2 = Convert.ToInt32(pToDecrypt.Substring(num1 * 2, 2), 0x10);
buffer1[num1] = (byte)num2;
}
provider1.Key = Encoding.ASCII.GetBytes(sKey);
provider1.IV = Encoding.ASCII.GetBytes(sKey);
MemoryStream stream1 = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream1, provider1.CreateDecryptor(), CryptoStreamMode.Write);
stream2.Write(buffer1, 0, buffer1.Length);
stream2.FlushFinalBlock();
StringBuilder builder1 = new StringBuilder();
return Encoding.Default.GetString(stream1.ToArray());
}
//=================================================================================如题请求写一个逆向对称解密函数,谢谢!
public static string Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider(); byte[] buffer1 = new byte[pToDecrypt.Length / 2]; for (int num1 = 0; num1 < (pToDecrypt.Length / 2); num1++)
{
int num2 = Convert.ToInt32(pToDecrypt.Substring(num1 * 2, 2), 0x10);
buffer1[num1] = (byte)num2;
}
provider1.Key = Encoding.ASCII.GetBytes(sKey);
provider1.IV = Encoding.ASCII.GetBytes(sKey);
MemoryStream stream1 = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream1, provider1.CreateDecryptor(), CryptoStreamMode.Write);
stream2.Write(buffer1, 0, buffer1.Length);
stream2.FlushFinalBlock();
StringBuilder builder1 = new StringBuilder();
return Encoding.Default.GetString(stream1.ToArray());
}
//=================================================================================如题请求写一个逆向对称解密函数,谢谢!
解决方案 »
- [求助]一道笔试题,字符串反转
- c++游戏开发需要学习什么,c#和c++开发游戏那个效率高,质量高?
- 关于异步委托
- 请问我该怎么写下面这个表达式?
- 怎样将文本里某些字符串替换掉?(在线等!)
- 求C#做的远程桌面例子,内详!奖100分+RMB100元
- 求解一段关于构造函数的代码!!
- 求Qp 的C#解码,请教社区高手,支持者有分,
- ****想要发表论文,投稿邮箱:[email protected] 应该去哪里发表!!
- 自定义变量参数如何可以为空,即fun()可以,fun("")也可以?
- 触发器与存储过程的区别。
- SqlCommand执行一sql语句后,我想将那个查找到的id赋给变量以便下次insert怎么办?
我用System.Text.Encoding.Unicode.GetBytespublic static string Decrypt(string datastr, string keystr)
{
System.Security.Cryptography.DESCryptoServiceProvider desc = new System.Security.Cryptography.DESCryptoServiceProvider();
byte[] key = System.Text.Encoding.Unicode.GetBytes(keystr);
byte[] data = Convert.FromBase64String(datastr);
System.IO.MemoryStream ms = new System.IO.MemoryStream();//存储解密后的数据
CryptoStream cs = new CryptoStream(ms, desc.CreateDecryptor(key, key), CryptoStreamMode.Write);
cs.Write(data, 0, data.Length);//解密数据
cs.FlushFinalBlock();
return System.Text.Encoding.Unicode.GetString(ms.ToArray());
}
public static string Encrypt(string datastr, string keystr)
{
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();//des进行加密
byte[] key = System.Text.Encoding.Unicode.GetBytes(keystr);
byte[] data = System.Text.Encoding.Unicode.GetBytes(datastr);
MemoryStream ms = new MemoryStream();//存储加密后的数据
CryptoStream cs = new CryptoStream(ms, desc.CreateEncryptor(key, key), CryptoStreamMode.Write);
cs.Write(data, 0, data.Length);//进行加密
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());//取加密后的数据
}
public static string Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider provider2 = new DESCryptoServiceProvider(); byte[] buffer3 = new byte[pToEncrypt.Length]; provider2.Key = Encoding.ASCII.GetBytes(sKey);
provider2.IV = Encoding.ASCII.GetBytes(sKey);
MemoryStream stream5 = new MemoryStream();
CryptoStream stream6 = new CryptoStream(stream5, provider2.CreateEncryptor(), CryptoStreamMode.Write);
stream6.Write(buffer3, 0, buffer3.Length);
stream6.FlushFinalBlock();
// StringBuilder builder1 = new StringBuilder();
//return Encoding.Default.GetString(stream1.ToArray());
byte[] buffer4 = new byte[stream5.ToArray().Length];
buffer4 = stream5.ToArray();
string text1= "";
for (int num1 = 0; num1 < buffer4.Length;num1++)
{
int num2 = (Int32)buffer4[num1];
text1 = text1 + Convert.ToString(num2, 0x10);
//text1 = text1 + buffer2[num1].ToString() + " " ;
}
return text1.ToUpper();
}
{
DESCryptoServiceProvider provider2 = new DESCryptoServiceProvider(); byte[] buffer3 = new byte[pToEncrypt.Length]; provider2.Key = Encoding.ASCII.GetBytes(sKey);
provider2.IV = Encoding.ASCII.GetBytes(sKey);
MemoryStream stream5 = new MemoryStream();
CryptoStream stream6 = new CryptoStream(stream5, provider2.CreateEncryptor(), CryptoStreamMode.Write);
stream6.Write(buffer3, 0, buffer3.Length);
stream6.FlushFinalBlock();
// StringBuilder builder1 = new StringBuilder();
//return Encoding.Default.GetString(stream1.ToArray());
byte[] buffer4 = new byte[stream5.ToArray().Length];
buffer4 = stream5.ToArray();
string text1= "";
for (int num1 = 0; num1 < buffer4.Length;num1++)
{
text1= text1+ buffer4[i].ToString("X").PadLeft(2,'0');
}
return text1;