目的:做一个密码管理工具; 思路:A、将所有的数据加密为一个数据文件,加载的时候解密后显示到DataGridView;          B、将字符串加密后存在XML节点里面,加载的时候再逐一读取并解密后显出来。 问题:如果使用A方案,加、解密函数如何写(需要返回数据集)?          如果使用B方案,逐一读取并解密字符串后,如何将解密后的字符串显示到DataGridView;   在线等..........

解决方案 »

  1.   

    加密/解密应该是对每个字符串进行(如:用户名,密码),而不是用整个数据集.加密算法.NET本身就有提供,例程也有,一看就明白了,很简单的.
      

  2.   

    TO:cmHua() "加密/解密应该是对每个字符串进行",我也是这个思路,但是我的问题出在从XML节点读出来解密后怎么写到datagridview里面,其二是怎么从datagridview读出来加密后写到XML里面去.
      

  3.   


    问题:如果使用A方案,加、解密函数如何写(需要返回数据集)? 
    如果使用B方案,逐一读取并解密字符串后,如何将解密后的字符串显示到DataGridView; ————————————————————————————————
    不管哪个方案,解密出来的还是字符串,自己建个DataTable,增加行,加密的时候也是遍历这个DataTable
      

  4.   

    google,baidu.yahoo,QQ群......都用上了.还是没有答案
      

  5.   

    XML内容:
         <?xml version="1.0" encoding="utf-8" ?>
    <USERINFO>
      <USERKEY>
        <NO>001</NO>
        <TITLE>NetSales</TITLE>
        <ITEMS>http://www.taobao.com</ITEMS>
        <USER>沙漠虎1号</USER>
        <PASSWORD>12345678</PASSWORD>
        <OTHER>Null</OTHER>
      </USERKEY>
      <USERKEY>
        <NO>002</NO>
        <TITLE>NetSales1</TITLE>
        <ITEMS>http://www.google.com</ITEMS>
        <USER>沙漠虎2号</USER>
        <PASSWORD>12345678</PASSWORD>
        <OTHER>Null</OTHER>
      </USERKEY>
      <USERKEY>
        <NO>003</NO>
        <TITLE>NetSales3</TITLE>
        <ITEMS>http://www.yahoo.com</ITEMS>
        <USER>沙漠虎3号</USER>
        <PASSWORD>12345678</PASSWORD>
        <OTHER>Null</OTHER>
      </USERKEY>
    </USERINFO>
    代码:
            private void frmMain_Load(object sender, EventArgs e)
            {
                XmlDocument XmlDoc = new XmlDocument();
                XmlDoc.Load("UserData.xml");
                XmlNode XmlRoot = XmlDoc.SelectSingleNode("USERINFO");
                XmlNode xmlNod = XmlRoot.SelectSingleNode("USERKEY");
                DataTable dt = new DataTable();
                dt.Columns.Add("col1");
                dt.Columns.Add("col2");
                for (int i = 0; i < XmlRoot.ChildNodes.Count; i++)            {
                        DataRow dr = dt.NewRow();
                        //dr["col1"] = xmlNod.ChildNodes[i].Attributes["NO"].Value.ToString();
                        dr["col1"] = xmlNod.ChildNodes[i].InnerText.ToString();
                        dr["col2"] = xmlNod.ChildNodes[i].InnerText.ToString();
                        dt.Rows.Add(dr);
                    dgUserKey.DataSource = dt;
                }        }结果:变成了一列一条记录
      

  6.   

    方案A,将DataSet序列化为byte数组,再对byte数组加密后存为文件.加载数据时后对文件解密,再反序列化为DataSet.
      

  7.   

    To:Bote_China() ,我不是很明白,你能给段代码吗?
      

  8.   

    同一主题:
    http://community.csdn.net/Expert/topic/5626/5626830.xml?temp=.8874781
      

  9.   

    我有一个做好的程序:
    http://skyd.cn/Info.aspx?ID=20我是采用异或加密的,用用户名、密码、口令三项代码之和滚动加密信息类对象的每个属性,存档文件中只保存密文和加密前的所有属性字节码总长度,依据这个长度判断解密的成功与否。
      

  10.   

    manasheep(斯克迪亚) ,我愿意花20元给你买源码(不能使用其他控件),请联系我:QQ 332998001
      

  11.   

    个你一个类似的,但是返回数据集自己去写
    他帮定的其实就是一个数据表结构
    自己定义一个TATLE 循环添加就好了
     private string deEncrypt(string strInput)
            {            string strOutput = null;
                char[] charFont;
                int i, intFont;            charFont = strInput.ToCharArray();            for (i = 0; i < strInput.Length; i++)
                {
                    intFont = (int)charFont[i];
                    if (47 < intFont && intFont < 58)
                    {
                        intFont += 17;
                    }
                    else if (64 < intFont && intFont < 75)
                    {
                        intFont -= 17;
                    }
                    else if (74 < intFont && intFont < 91)
                    {
                        intFont += 22;
                    }
                    else if (96 < intFont && intFont < 112)
                    {
                        intFont -= 22;
                    }
                    else if (111 < intFont && intFont < 117)
                    {
                        intFont += 5;
                    }
                    else if (116 < intFont && intFont < 122)
                    {
                        intFont -= 5;
                    }
                    else
                    {
                        intFont -= 0;                }
                    charFont[i] = Convert.ToChar(intFont);            }            for (i = 0; i < charFont.Length; i++)
                {
                    strOutput += charFont[i];
                }            return strOutput;        }
      

  12.   

    加密方式其实就是自己写的一个算法
    我其实也想用XML加密的方式,不过我是在PDA上作开发
    如果要用XML要自己从写很多东西
    就用的文本方式
      

  13.   

    这么 多人了
    不知道 还能不能 接到分..
    开车去追.............................................    .---- -. -. .  .   .
       ( .',----- - - ' '
        \_/      ;--:-          __--------------------___  ____=====
       __U__n_^_''__[.  ooo___  | |_!_||_!_||_!_||_!_| |   |..|_i_|.
     c(_ ..(_ ..(_ ..( /,,,,,,] | |___||___||___||___| |   |
     ,_\___________'_|,L______],|______________________|_i,!________
    /;_(@)(@)==(@)(@)   (o)(o)      (o)^(o)--(o)^(o)          (o)(o)
      

  14.   

    关注  .----   -.   -.   .     .       . 
          (   . ',-----   -   -   '   ' 
            \_/             ;--:-                     __--------------------___     ____===== 
          __U__n_^_ ' '__[.     ooo___     |   |_!_||_!_||_!_||_!_|   |       |..|_i_|. 
      c(_   ..(_   ..(_   ..(   /,,,,,,]   |   |___||___||___||___|   |       | 
      ,_\___________ '_|,L______],|______________________|_i,!________ 
    /;_(@)(@)==(@)(@)       (o)(o)             (o)^(o)--(o)^(o)                     (o)(o)