有一些数据需要保存在文件中,程序启动时读取,同时要求不能让用户看清楚文件的内容。
我目前想到的方法如下:
1.复合文档.
  C#做不了就用VC,独立的不行就把WORD引用进来
2.自己对文本加密
3.保存在数据库中并对数据库设置密码但是这些方法都不是非常的理想。我的想法是操作简单,只需要关心读写,如同复合文档那
样,就达到很好的加密效果;同时又不需要别的库或者组件的支持。不知道可能不?哪位有
什么好的建议可以指点一下么?

解决方案 »

  1.   

    保存在App.config中,配合加密,修改保存数据库链接字符串我就是这样做的的://保存----------------------------
    public static void SaveToConfig(string connStr)
    {
    XmlDocument doc = new XmlDocument();
    string fn = "XXXX.exe.config";doc.Load(fn);XmlNodeList nodes = doc.GetElementsByTagName("add");for (int i = 0; i < nodes.Count; i++)
    {
    XmlAttribute att = nodes[i].Attributes["key"];
    if (att.Value == "SQLConectionString")
    {
    att = nodes[i].Attributes["value"];
    att.Value = connStr;
    break;
    }
    }doc.Save(fn);
    }//加密:------------------------------------
    public static string Encode(string data)
    {
    byte[] aKey = System.Text.ASCIIEncoding.ASCII.GetBytes(GetProcessID());
    byte[] aIV = System.Text.ASCIIEncoding.ASCII.GetBytes(GetProcessID());DESCryptoServiceProvider cp = new DESCryptoServiceProvider();
    MemoryStream ms = new MemoryStream();
    CryptoStream cs = new CryptoStream(ms, cp.CreateEncryptor(aKey, aIV),
    CryptoStreamMode.Write);
    StreamWriter sw = new StreamWriter(cs);sw.Write(data);
    sw.Flush();
    cs.FlushFinalBlock();
    sw.Flush();
    return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
    }//读取:---------------------------------
    private static readonly string userName = ConfigurationManager.AppSettings.Get("SQLConectionString");
    //解密:-----------------------------------------
    public static string Decode(string data)
    {
    byte[] aKey = System.Text.ASCIIEncoding.ASCII.GetBytes(GetProcessID());
    byte[] aIV = System.Text.ASCIIEncoding.ASCII.GetBytes(GetProcessID());byte[] Enc;
    try
    {
    Enc = Convert.FromBase64String(data);
    }
    catch
    {
    return null;
    }DESCryptoServiceProvider cp = new DESCryptoServiceProvider();
    MemoryStream ms = new MemoryStream(Enc);
    CryptoStream cs = new CryptoStream(ms, cp.CreateDecryptor(aKey, aIV),
    CryptoStreamMode.Read);
    StreamReader sr = new StreamReader(cs);
    return sr.ReadToEnd();
    }
      

  2.   

    对CSDN无奈了,这个破编辑器在火狐中不能用,害得我插入代码要的UBB标签要自己敲,竟然区分大小写!
    C#写成c#不解释!!!!!!!!!!!!!!!!!!!!!!!!!!!!