本来有两个DES加密的函数,但对密钥与字符长度有约束,因此不知道哪位兄弟姐妹有没有这方面的源码,谢谢提供。本人QQ:71181397

解决方案 »

  1.   

    看看这个http://www.codeproject.com/vb/net/VB_NET_TripleDES.asp希望有帮助
      

  2.   

    #region 【内部】 使用TripleDES对字符串进行加密/解密

    /// <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
      

  3.   

    外面你调用时:
    /// <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 };
      

  4.   

    ParadiseX(天.使.之.间)  请问你这个对密钥的长度与字符串的长度有控制吗?
      

  5.   

    你需要使用这样的函数进行制定你的字符长度
     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);
      

  6.   

    Encoding.UTF32 没有这个对象啊。
      

  7.   

    还是不行呢,哪位再多指点一下咯。主要是那个IV/KEY的值搞不好,长了就有问题。