我写了个小程序,功能是用浏览一般图片,用aes加密图片,用AES解密图片,现需满足一下要求:双击要打开图片,如果图片是未加密的文件,则直接用软件打开,如果文件时加密后的文件,则该软件跳出密码对话框,要求输入需解密密码。现需判断文件是否加密,目前采用的是捕捉错误,如果打不开文件,则弹出密码对话框。但这种方法耗资源和时间,请问大家,有没有好的方法,谢谢了

解决方案 »

  1.   

    楼上的几位说的办法很好呀。
    在你把图片加密的时候,先定义一个文件头比如长度为30个字节,譬如:
    EPF(就是 加密的图片文件 的意思),然后写入文件的长度。
    还可以写入一些加密时间或特殊的加密标志等等。在这30个字节后面在写入你加密完成的图片文件。解密的时候,先用文件打开这30个字节,如果和你预先设定的若干内容相同,则认为是你的加密图片文件,
    之后读取这些数据,把这些数据解密就可以了。如果打开的数据文件不包含特定的字符,则是标准的图片格式了,打开即可。文件头:
    struct FileHeader
            { 
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
                public string SIGN;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
                public string LEN;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
                public string TIME;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 7)]
                public string OTHER;
            }