C# 下读写INI的最简单方法

sosoben 2012-09-22 12:33:50
把我的设置保存在一个ini上,

求比较简单的方法,或者编译好的函数

最好能加密的 不能让人随意更改的
...全文
565 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
种草德鲁伊 2012-09-25
  • 打赏
  • 举报
回复
7楼这种方法就是扯蛋的,你说要保障安全吧,你用des加密,那密钥又放在什么地方?说要防止一般用户随意修改吧,用看不懂的格式存储就可以,比如二进制文件,这样加密过的数据用ini来存储又有什么意义?
sosoben 2012-09-25
  • 打赏
  • 举报
回复
删除的不算吧 OK 这次得益不少,下次我再请教读写XML的方法,谢谢大家
niss 2012-09-25
  • 打赏
  • 举报
回复
你所谓的不让人修改是指什么?人为去删除也算吗?
超级大咸鱼 2012-09-25
  • 打赏
  • 举报
回复
MD5加密,用指定的Key解密即可
/// <summary>
/// 创建Key
/// </summary>
/// <returns></returns>
public static string GenerateKey()
{
DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
}

加密:
 /// <summary>
/// MD5加密
/// </summary>
/// <param name="pToEncrypt"></param>
/// <param name="sKey"></param>
/// <returns></returns>
public static string MD5Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();


}

解密:
/// <summary>
/// MD5解密
/// </summary>
/// <param name="pToDecrypt"></param>
/// <param name="sKey"></param>
/// <returns></returns>
public static string MD5Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for (int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder();

return System.Text.Encoding.Default.GetString(ms.ToArray());
}


解密的使用方法:
 //读取密码和key
string connectionstring = File.ReadAllText(Application.StartupPath + @"\ConnectionString", Encoding.Default);
string key = File.ReadAllText(Application.StartupPath + @"\key", Encoding.Default);
//使用key解密
connectionstring = DAL_HoLaSystem.DBControl.DES.MD5Decrypt(connectionstring, key);
加密的使用方法:
 //获取相应的key
string key = DAL_HoLaSystem.DBControl.DES.GenerateKey();
//MD5加密明码
connectionstring = DAL_HoLaSystem.DBControl.DES.MD5Encrypt(string.Format(@"DataBase={0};Server={1};uid={2};pwd={3}", txtDataName.Text.Trim(), txtServerName.Text.Trim(), txtUID.Text.Trim(), txtPWD.Text.Trim()), key);
//定义写入流
StreamWriter sw = new StreamWriter(Application.StartupPath + @"\ConnectionString");
StreamWriter sw2 = new StreamWriter(Application.StartupPath + @"\key");
//写入字符串
sw.Write(connectionstring);
sw2.Write(key);
//关闭流
sw2.Close();
sw.Close();
sosoben 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

既然不想让别人修改,直接二进制序列化,什么都能保存,不更方便吗
[/Quote]

求方法啊!! 用1楼的方法 怎么再二进制化啊?
种草德鲁伊 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

呵呵 我只是提供思路,这代码是随手写的,放哪就是你的问题了

[/Quote]

放哪都不是问题,既然别人能访问到密钥,那你所谓的加密有什么用?忽悠人眼?
超级大咸鱼 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
7楼这种方法就是扯蛋的,你说要保障安全吧,你用des加密,那密钥又放在什么地方?说要防止一般用户随意修改吧,用看不懂的格式存储就可以,比如二进制文件,这样加密过的数据用ini来存储又有什么意义?
[/Quote]
呵呵 我只是提供思路,这代码是随手写的,放哪就是你的问题了
种草德鲁伊 2012-09-24
  • 打赏
  • 举报
回复
既然不想让别人修改,直接二进制序列化,什么都能保存,不更方便吗
种草德鲁伊 2012-09-24
  • 打赏
  • 举报
回复
又不能让别人修改,何苦用什么ini...
sosoben 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

参考
防止修改很简单,对配置文件或者配置参数做一个数字签名就可以了。
[/Quote]

关键是你给我的网址里没有教我们用数字签名的啊? ini也能加密吗? 不是XML才可以吗?
顺求XML保存设置的现成方法
threenewbee 2012-09-22
  • 打赏
  • 举报
回复
参考
防止修改很简单,对配置文件或者配置参数做一个数字签名就可以了。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧