正在做日志需求:
导出的日志文件,再导入.
领导说要知道导出的日志中间是否被修改过??
能实现吗?日志是txt、xml格式都可以,只要能在windows下打开查看就行。

解决方案 »

  1.   

    RSA文件签名算法,跟Email用的电子签名一个道理
      

  2.   

    如果不严格,直接判断修改日期就行,
    严格一点,你就用FileSystemWatcher进行监视,如果文件有变动进行事件通知做进一步的操作。
      

  3.   

    明文存储,加MD5效验串,当然在做MD5的串时加个字符串常量.
      

  4.   

    明文存储,加MD5效验串,当然在做MD5的串时加个字符串常量//
    能说详细些吗?我不懂如何用MD5!
      

  5.   

    using System;
    using System.IO;
    using System.Security.Cryptography;
    using System.Text;class FileEncrypt {    public static Byte[] ConvertStringToByteArray(String s)
        {
            return (new UnicodeEncoding()).GetBytes(s);
        }    public static void Main()
        {
            //创建文件流
            FileStream fs  = new FileStream("EncryptedFile.txt",FileMode.Create,FileAccess.Write);        Console.WriteLine("输入一些要存储在加密文件中的文本::");
            String strinput = Console.ReadLine();        Byte[] bytearrayinput=ConvertStringToByteArray(strinput);        //具有随机密钥的 DES 实例
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            //从此实例创建 DES 加密器
            ICryptoTransform desencrypt = des.CreateEncryptor();        //创建使用 des 加密转换文件流的加密流
            CryptoStream cryptostream = new CryptoStream(fs,desencrypt,CryptoStreamMode.Write);        //写出 DES 加密文件
            cryptostream.Write(bytearrayinput,0,bytearrayinput.Length);        cryptostream.Close();        //创建文件流以读回加密文件
            FileStream fsread = new FileStream("EncryptedFile.txt",FileMode.Open,FileAccess.Read);        //从此 des 实例创建 DES 解密器
            ICryptoTransform desdecrypt = des.CreateDecryptor();        //创建加密流集合以便对传入的字节进行读取并执行 des 解密转换
            CryptoStream cryptostreamDecr = new CryptoStream(fsread,desdecrypt,CryptoStreamMode.Read);
            //输出已解密文件的内容
            Console.WriteLine( (new StreamReader(cryptostreamDecr, new UnicodeEncoding())).ReadToEnd() );        Console.WriteLine ();
            Console.WriteLine ("按 Enter 键继续...");
            Console.ReadLine();
       }
    }
      

  6.   

    http://www.microsoft.com/china/MSDN/library/archives/library/dnnetsec/html/cryptosimplified.asp
      

  7.   

    保存:
    首先
    string data=//你的数据string bs1=data+"你自己定义的常量字符"
    byte[] temp=System.Text.Encoding.Unicode.GetBytes(bs1);
    MD5 md5 = new MD5CryptoServiceProvider();
    byte[] temp=md5.ComputeHash(temp);将temp转换为字符串,可以使用string bs2=temp[0].ToString("X2")+temp[1].ToString("X2")..n
    然后data=data+bs2;
    这个就是你要保存的日值文件的文本了.载入的时候和此操作相反就可以了.
    string loaddata=//你从文件中在入的数据
    string data=loaddata.substring(0,loaddata.的长度-32)
    string md5=loaddata.substring(loaddata.的长度-32,32)然后再执行
    string bs1=data+"你自己定义的常量字符"
    byte[] temp=System.Text.Encoding.Unicode.GetBytes(bs1);
    MD5 md5 = new MD5CryptoServiceProvider();
    byte[] temp=md5.ComputeHash(temp);将temp转换为字符串,可以使用string bs2=temp[0].ToString("X2")+temp[1].ToString("X2")..n
    if(bs2==md5)
    {
    //没有修改
    }
    else
    {
    //修改过
    }