日期:2014-05-18  浏览次数:20884 次

求大神帮忙~~~~~关于DES加密的问题
论坛的各位大神,帮个忙。

我想通过DES加密来存储我的各种密码~

我想用一个固定的Key来加密字符。

问题来了
  public string GenerateKey()
  {
  DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
  return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
  }
每次的Key都是变化的,怎么把我的口令(例如 hack+=3? )转换为Key?我试过强制转换,但是不知怎么操作。

大神们,求解!!!求具体做法!!

------解决方案--------------------
byte[] key = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }
 这种格式
------解决方案--------------------
C# code
   /// <summary> 
        /// 加密字符串 
        /// 注意:密钥必须为8位 
        /// </summary> 
        /// <param name="strText">字符串</param> 
        /// <param name="encryptKey">密钥</param>
        /// <return>加密后字符串</return>
        public static string DesEncrypt(string strText) 
        {
            string outString="";
            byte[] byKey=null; 
            byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
            try 
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(encryptKey.Substring(0, encryptKey.Length)); 
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray = Encoding.UTF8.GetBytes(strText); 
                MemoryStream ms = new MemoryStream(); 
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write) ; 
                cs.Write(inputByteArray, 0, inputByteArray.Length); 
                cs.FlushFinalBlock();
                outString = Convert.ToBase64String(ms.ToArray()); 
            } 
            catch(System.Exception) 
            {
                outString = ""; 
            }

            return outString;
        } 

        /// <summary> 
        /// 解密字符串 
        /// </summary> 
        /// <param name="strText">加了密的字符串</param> 
        /// <param name="decryptKey">密钥</param> 
        public static string DesDecrypt(string strText) 
        {
            string outString = "";
            byte[] byKey = null; 
            byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
            byte[] inputByteArray = new Byte[strText.Length]; 
            try 
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0, decryptKey.Length)); 
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                inputByteArray = Convert.FromBase64String(strText); 
                MemoryStream ms = new MemoryStream(); 
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write); 
                cs.Write(inputByteArray, 0, inputByteArray.Length); 
                cs.FlushFinalBlock(); 
                System.Text.Encoding encoding = new System.Text.UTF8Encoding(); 
                outString = encoding.GetString(ms.ToArray()); 
            } 
            catch(System.Exception) 
            {
                outString = ""; 
            }

            return outString;
        } 

        #endregion