一个用户登录界面 保存密码后把这个密码加密保存到ini文件
然后读出解密来验证
有什么比较好的方法用于这种加密呢?
呵呵
刚刚接触程序设计,大家多多指导~~

解决方案 »

  1.   

    MD5就可以了
    另外。NET中也有加密的算法
      

  2.   

    MD5不能解密(且不说理论上的事),可以用DES、RSA等类来实现,msdn里有例子
      

  3.   

    建议使用DES或者RSA,这是真的加密。MD5是哈希值,不是真的加密,散列而已贴一个DES的方法给你:// 初始化DES加密的密钥和一个随机的、8比特的初始化向量(IV)
    private byte[] key_8 = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef};
    private byte[] IV_8 = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef};
    /// <summary>
    /// DES解密字符串
    /// </summary>
    /// <param name="decryptString">待解密的字符串</param>
    /// <param name="rgbKey">解密密钥,要求为8位,和加密密钥相同</param>
    /// <param name="rgbIV">密钥向量</param>
    /// <returns>解密成功返回解密后的字符串,失败返源字符串</returns>
    private string DES_Decrypt(string decryptString, byte[] rgbKey, byte[] rgbIV)
    {
    try
    {
    byte[] inputByteArray = Convert.FromBase64String(decryptString);
    DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
    MemoryStream mStream = new MemoryStream();
    CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
    cStream.Write(inputByteArray, 0, inputByteArray.Length);
    cStream.FlushFinalBlock();
    return Encoding.UTF8.GetString(mStream.ToArray());
    }
    catch
    {
    return decryptString;
    }
    } /// <summary>
    /// TripleDES加密字符串
    /// </summary>
    /// <param name="encryptString">待加密的字符串</param>
    /// <param name="rgbKey">密钥</param>
    /// <param name="rgbIV">密钥向量</param>
    /// <returns>加密成功返回加密后的字符串,失败则返回源字符串</returns>
    private string TripleDES_Encrypt(string encryptString, byte[] rgbKey, byte[] rgbIV)
    {
    try
    {
    byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
    TripleDESCryptoServiceProvider dCSP = new TripleDESCryptoServiceProvider();
    MemoryStream mStream = new MemoryStream();
    CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
    cStream.Write(inputByteArray, 0, inputByteArray.Length);
    cStream.FlushFinalBlock();
    return Convert.ToBase64String(mStream.ToArray());
    }
    catch
    {
    return encryptString;
    }
    }
      

  4.   

    不好意思,ls贴错误了,贴成了三重DES了
    应该是这个:// 初始化DES加密的密钥和一个随机的、8比特的初始化向量(IV)
    private byte[] key_8 = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef};
    private byte[] IV_8 = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef};
    /// <summary>
    /// DES加密字符串
    /// </summary>
    /// <param name="encryptString">待加密的字符串</param>
    /// <param name="rgbKey">加密密钥,要求为8位</param>
    /// <param name="rgbIV">密钥向量</param>
    /// <returns>加密成功返回加密后的字符串,失败返回源字符串</returns>
    private string DES_Encrypt(string encryptString, byte[] rgbKey, byte[] rgbIV)
    {
    try
    {
    byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
    DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
    MemoryStream mStream = new MemoryStream();
    CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
    cStream.Write(inputByteArray, 0, inputByteArray.Length);
    cStream.FlushFinalBlock();
    return Convert.ToBase64String(mStream.ToArray());
    }
    catch
    {
    return encryptString;
    }
    } /// <summary>
    /// DES解密字符串
    /// </summary>
    /// <param name="decryptString">待解密的字符串</param>
    /// <param name="rgbKey">解密密钥,要求为8位,和加密密钥相同</param>
    /// <param name="rgbIV">密钥向量</param>
    /// <returns>解密成功返回解密后的字符串,失败返源字符串</returns>
    private string DES_Decrypt(string decryptString, byte[] rgbKey, byte[] rgbIV)
    {
    try
    {
    byte[] inputByteArray = Convert.FromBase64String(decryptString);
    DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
    MemoryStream mStream = new MemoryStream();
    CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
    cStream.Write(inputByteArray, 0, inputByteArray.Length);
    cStream.FlushFinalBlock();
    return Encoding.UTF8.GetString(mStream.ToArray());
    }
    catch
    {
    return decryptString;
    }
    }