c# ini文件加密

hassss2008 2010-03-25 10:31:21
大家可以提供建议也可以直接提供代码
...全文
296 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Luohui109 2010-12-01
  • 打赏
  • 举报
回复
回答都是正确的.
zyjj521 2010-03-25
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Text;

using System.Security.Cryptography;

namespace Common
{
public class DESEncrypt
{
public DESEncrypt() { }
#region 加密数据
/// <summary>
/// 加密处理
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns></returns>
public static string Encrypt(string str)
{
return Encrypt(str,"zhangyue2010");
}
/// <summary>
/// 加密处理
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <param name="key">key值</param>
/// <returns></returns>
public static string Encrypt(string str, string key)
{
//定义访问数据加密标准
DESCryptoServiceProvider dsp = new DESCryptoServiceProvider();
byte[] inputArray;
inputArray = Encoding.Default.GetBytes(str);
dsp.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(key,"md5").Substring(0,8));
dsp.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5").Substring(0, 8));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, dsp.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputArray,0,inputArray.Length);
cs.FlushFinalBlock();
StringBuilder sb = new StringBuilder();
foreach(byte b in ms.ToArray())
{
sb.AppendFormat("{0:X2}",b);
}
return sb.ToString();
}
#endregion

#region 解密数据
/// <summary>
/// 解密处理
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string Decrypt(string str)
{
return Decrypt(str,"zhangyue2010");
}
/// <summary>
/// 解密处理
/// </summary>
/// <param name="str"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string Decrypt(string str, string key)
{
DESCryptoServiceProvider dsp = new DESCryptoServiceProvider();
int len;
len = str.Length / 2;
byte[] inputArray=new byte[len];
int i, j;
for (i = 0; i < len; i++)
{
i = Convert.ToInt32(str.Substring(i*2,2),16);
inputArray[i] = (byte)i;
}
dsp.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(key,"md5").Substring(0,8));
dsp.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5").Substring(0, 8));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms,dsp.CreateDecryptor(),CryptoStreamMode.Write);
cs.Write(inputArray,0,inputArray.Length);
cs.FlushFinalBlock();
return Encoding.Default.GetString(ms.ToArray());
}
#endregion
}
}


可以看看呦
zhou_zy 2010-03-25
  • 打赏
  • 举报
回复
回答都是正确的.
Baesky 2010-03-25
  • 打赏
  • 举报
回复
ini是个文本文件其实,有N种方法加密解密
常见的有:
用API操作INI和自解析~
不管操作和自解析,都可以采用,讲每个字符XOR一个任意数,然后解密时候还XOR这个任意数,就得到这个字符本身。这是最初级的。
还可以用流提供的加密流,比如 System.Security.Cryptography 空间里的类们~
hejialin666 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 a619762 的回复:]
其实ini加密 无非是加密里面的 值· 建议可以用 MD5 加密值
到网上下载一个MD5的源码

思路
string a=MD5.DoMD5("需要加密的值");

a 就成为加密后的值 然后用流存进 ini 文件中
[/Quote]
同意一楼的建议,我做的配置文件都是加密值,在写值之前先加密再写值。
我用的也是MD5
a619762 2010-03-25
  • 打赏
  • 举报
回复
其实ini加密 无非是加密里面的 值· 建议可以用 MD5 加密值
到网上下载一个MD5的源码

思路
string a=MD5.DoMD5("需要加密的值");

a 就成为加密后的值 然后用流存进 ini 文件中

110,536

社区成员

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

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

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