本来有两个DES加密的函数,但对密钥与字符长度有约束,因此不知道哪位兄弟姐妹有没有这方面的源码,谢谢提供。本人QQ:71181397
解决方案 »
- 马上要用c# 开发项目,第一次基础,帮我解释下下面的代码?
- 动态窗体背景
- 得到一个位图的各点的值如char buff[128][128]后怎样把它生成一个jpg图片显示 (在线等)
- 怎样从终端输入整型?
- 如何在不用第3个变量的情况下,交换两个变量的值
- 关于文件上传的问题??
- 使用RichTextBox控件的LoadFile方法打开文件时,提示"无效文件格式"
- 对象的清除(用过VB的朋友来看看)
- 在一个数据集中多表更新如何实现,是写一条条的SQL语句吗?还是用多个数据集来实现多表更新?
- How to Create a line Control with an Arrow in the end
- 高分求一个比较好的算法
- windowsForm中,如何打开目录
/// <summary>
///对字符串进行加密
/// </summary>
/// <param name="inStr">待加密字符串</param>
/// <param name="tdesKey">密钥</param>
/// <param name="tdesIV">初始向量</param>
/// <returns>输出字符串</returns>
private string EncryptData(string inStr, byte[] tdesKey, byte[] tdesIV)
{
try
{
byte[] bytIn = UTF8Encoding.UTF8.GetBytes(inStr);
MemoryStream ms = new MemoryStream();
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms, tdes.CreateEncryptor(tdesKey, tdesIV), CryptoStreamMode.Write);
cs.Write(bytIn, 0, bytIn.Length);
cs.FlushFinalBlock();
ms.Close();
byte[] bytOut = ms.ToArray();
return Convert.ToBase64String(bytOut); }
catch(Exception e)
{
throw e;
}
} /// <summary>
/// 对字符串进行解密
/// </summary>
/// <param name="inStr">待解密字符串</param>
/// <param name="tdesKey">密钥</param>
/// <param name="tdesIV">初始向量</param>
/// <returns>输出字符串</returns>
private String DecryptData(String inStr, byte[] tdesKey, byte[] tdesIV)
{
try
{
byte[] bytIn = Convert.FromBase64String(inStr);
MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length); TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms, tdes.CreateDecryptor(tdesKey, tdesIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
}
catch(Exception e)
{
throw e;
}
}
#endregion
/// <summary>
/// KEY
/// </summary>
private static byte[] tdesKey;/// <summary>
/// 公用IV
/// </summary>
private byte[] tdesIV = { 34, 3, 29, 141, 130, 105, 110, 103, 32, 83, 116, 114, 105, 110, 103, 46 };
public static Byte[] ConvertStringToByteArray(string s, Encoding enc)
{
int iBC = enc.GetByteCount(s);
int iMBC = enc.GetMaxByteCount(s.Length);
byte[] bytes = enc.GetBytes(s);
return bytes;
//return (new UnicodeEncoding()).GetBytes(s);
}
Encoding u32 = Encoding.UTF32;
DESCryptoServiceProvider nowkey = new DESCryptoServiceProvider();
nowkey.Key = ConvertStringToByteArray(NowTime, u32);
nowkey.IV = ConvertStringToByteArray(NowTime, u32);