首页 新闻 会员 周边

对xml文件全部内容进行加密

0
悬赏园豆:50 [已解决问题] 解决于 2012-03-08 10:52

对xml文件内容进行加密,xml文件中存放的是不想让用户看到的信息,通过加密算法后成为密文存放到bin\debug下,当用户启动程序的时候先对xml文件内容进行解密再进行加载,加载以后再对xml文件内容进行操作,这个应该怎么操作阿

huomick的主页 huomick | 初学一级 | 园豆:14
提问于:2012-03-05 15:09
< >
分享
最佳答案
0

第一种方法,你将xml当文本文档处理,所有xml的内容都进行加密处理,加密后的内容变成了一串字符串,当你需要的时候将文本读取到内存中,然后进行解密,然后再转换成xml,然后再进行处理。

第二中就是将xml中每个元素的值,在写入的时候进行加密,在需要的时候先到xml中读取,再解密。

收获园豆:50
az235 | 大侠五级 |园豆:8483 | 2012-03-05 15:36

我想使用第一种方法,我是先将加密后的文件放到bin\debug文件夹下面,然后在使用的时候把加密的xml文件解密成为正常的xml文件,但是我还不想改变在bin\debug文件夹下的xml文件内容,这个怎么处理阿

huomick | 园豆:14 (初学一级) | 2012-03-06 09:33

@huomick: 解密后的内容是在内存当中,你不去写入就不会改变啊

az235 | 园豆:8483 (大侠五级) | 2012-03-06 09:38

@az235: 我是不是先对XmlDocument.Load(xmlFilePath),然后对xml文件进行解密操作,接着对xml文件操作,是这样吗

huomick | 园豆:14 (初学一级) | 2012-03-06 10:02

@huomick: 正确,但是记住不要将内容写入到加密的文件中,如果要修改,就要再次加密

az235 | 园豆:8483 (大侠五级) | 2012-03-06 10:15

@az235: 还想问您件事就是虽然xml文件放入到内存了,放入内存的xml文件是已经加密好的,通过解密xml文件会放在那里,我将如何对解密后的xml文件进行操作;其实我想做的是xml文件放的是服务器相关的信息(ip、serverName、userName),我对xml文件操作的时候把那些信息都取出来存放到List<ServerInfo>中这个操作已完成,主要是前面的操作。

huomick | 园豆:14 (初学一级) | 2012-03-06 10:36

@huomick: 

public void xxx()
{
using(StreamReader objReader = new StreamReader(文件路径))
{
string sLine=objReader.ReadToEnd();
        //解密sLine
        XmlDocument xml = XmlDocument.Load("解密后的字符串")
       //放到List中 

}
}
az235 | 园豆:8483 (大侠五级) | 2012-03-06 11:04

@az235: 您在load的时候应该是xml文件路径,怎么变成字符串了,而且解密后的xml文件应该存放到一个路径下吧!

huomick | 园豆:14 (初学一级) | 2012-03-06 11:17

@huomick: 文件路径是你加密后的文件,文件解密存储在字符串中就等于在内存当中,当你用laod方法时,系统内置了加载字符串的功能,所以这个操作还是在内存当中,这样说你能否明白?

az235 | 园豆:8483 (大侠五级) | 2012-03-06 11:21

@az235: 还是有点不明白,主要是在加载字符串的地方。

huomick | 园豆:14 (初学一级) | 2012-03-06 11:35

@huomick: 想想解码后返回的内容是什么?将那个内容当字符串处理

az235 | 园豆:8483 (大侠五级) | 2012-03-06 11:43

@az235:您看看我说的是不是和您的思路一样:先是把加密xml文件读出来放到字符串中,然后通过解密算法把xml解密成正常的xml文件放到sLine中,在用xmldocument.Load(sLine)对xml文件进行操作,您看是这样吗?

huomick | 园豆:14 (初学一级) | 2012-03-06 13:06

@az235: 在加密的时候,我怎么保存加密好的xml文件呢,还需要对xml文件进行加载吗

huomick | 园豆:14 (初学一级) | 2012-03-06 13:25

@az235: 我试了您的思路,好像有问题:

using (streamReader sr = new StreamReader(xmlFilePath)){

        string sLine = sr.ReadToEnd();

   //解密

        string jieMi =  File.Decrypt(sLine);

   xmlDocument doc = new XmlDocument();

   doc.Load(jieMi);

   //对xml文件进行操作

}

我运行的时候报异常了Illegal characters in path.

huomick | 园豆:14 (初学一级) | 2012-03-06 13:41

@huomick: 路径错了

az235 | 园豆:8483 (大侠五级) | 2012-03-06 13:44

@az235: 那我load应该是什么呢!难道是xmlFilePath吗

huomick | 园豆:14 (初学一级) | 2012-03-06 14:32

@az235: 我问您下就是,我经常要使用Load方法,我能不能把Load方法单独拿出来定义一个方法,等到调用对xml文件进行操作的方法时,就不用再到方法内部进行Load,这个怎么实现阿。

huomick | 园豆:14 (初学一级) | 2012-03-06 16:11

@huomick: 面向对象的重载

az235 | 园豆:8483 (大侠五级) | 2012-03-07 10:09

@az235: 怎么个重载法阿!能给个实例吗

huomick | 园豆:14 (初学一级) | 2012-03-07 10:55

@huomick: 哥你还在吗!我想问您个问题就是我想在xml中做个文件过滤器,在读xml文件的时候,读到的方法为true的话就直接调用已经写好的过滤方法。这个功能怎么实现阿!您帮我答完直接给分

huomick | 园豆:14 (初学一级) | 2012-03-08 09:46

@huomick: 用switch就好了,switch中枚举出你要调用的方法,然后读到方法名就调用,这样你能明白不?不要用true、if、else这些。

az235 | 园豆:8483 (大侠五级) | 2012-03-08 09:58

@az235: 在xml中那个验证方法名应该怎么写啊!是这样写吗!

<filters id="checkFile">

  <filter>.txt</filter>

  <filter>.exe</filter>

    <filter>.doc</filter>

</filters>

当我要验证文件的时候,先对上传文件名的后缀进行判断,如果满足以上类型就调用相应的过滤器

huomick | 园豆:14 (初学一级) | 2012-03-08 10:21

@huomick: 正确,有进步

az235 | 园豆:8483 (大侠五级) | 2012-03-08 10:42

@az235: 哥,以后有问题还能向您请教吗!我的园豆不够了。

huomick | 园豆:14 (初学一级) | 2012-03-08 10:53

@huomick: 把问题提上来,就会有人帮你解决的,我一般都在这上面的

az235 | 园豆:8483 (大侠五级) | 2012-03-08 10:55

@huomick:把这个问题也结束了吧 http://q.cnblogs.com/q/32674/#c260017

az235 | 园豆:8483 (大侠五级) | 2012-03-08 10:57

@az235: 谢谢了阿!

huomick | 园豆:14 (初学一级) | 2012-03-08 10:58

@az235: 您要是帮我针对Load写个独立的方法,我才能结阿!您上次说的对象重载怎么实现阿

huomick | 园豆:14 (初学一级) | 2012-03-08 11:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册