VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 796|回复: 6

密码保存到INI文件加密的问题

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-26 01:40:01 | 显示全部楼层 |阅读模式
一个用户登录界面 保存密码后把这个密码加密保存到ini文件
然后读出解密来验证
有什么比较好的方法用于这种加密呢?
呵呵
刚刚接触程序设计,大家多多指导~~
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-16 10:00:01 | 显示全部楼层
MD5就可以了
另外。NET中也有加密的算法
回复

使用道具 举报

0

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-2-17 09:15:02 | 显示全部楼层
MD5不能解密(且不说理论上的事),可以用DES、RSA等类来实现,msdn里有例子
回复

使用道具 举报

1

主题

7

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-2-23 09:45:01 | 显示全部楼层
MD5不能也不需要解密,直接拿加密后的密文进行比较,不是更好更安全?
回复

使用道具 举报

0

主题

23

帖子

20.00

积分

新手上路

Rank: 1

积分
20.00
发表于 2020-3-1 19:30:02 | 显示全部楼层
MD5是不可逆的,但直接拿加密后的密文进行比较
回复

使用道具 举报

0

主题

16

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-3-6 11:00:01 | 显示全部楼层
建议使用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;
                        }
                }

回复

使用道具 举报

0

主题

16

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-3-6 13:30:01 | 显示全部楼层
不好意思,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;
                        }
                }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表