怎样修改文件头信息

这两天在写DES文件加密的代码,其中遇到3个问题,请教一下:
1:我需要为已经加密的文件的扩展名改为“.des”(譬如原来为abc.jpg改为abc.des),在解密后又要改会原来的格式,这是问题来了:我怎么知道这个文件在加密前是什么格式的文件?请问,有什么办法可以在没有扩展名的情况下知道文件类型。我想可以在文件的头信息中记录文件原来的扩展名,但请问,C#怎样对文件的头文件信息进行访问?
2:我希望我的程序能识别哪个文件是已经加密了的,哪个是未加密或者已经解密的,但我不想只是简单的通过文件名进行判别,而是想通过文件的头信息来记录。
请问C#怎样可以访问(修改)文件头信息?
除了文件头信息,更好更专业的方法就更好了。先谢谢先

 

给你两种方法:

1.比较简单。你修改一下文件加密后的命名,比如 你对 abc.jpg 进行des加密,加密后的文件名改为 abc.jpg.des 这样就好解密了

2.对 abc.jpg 加密成 abc.des 后,用 FileStream 类的seek 方法移动到文件末尾, 把 扩展名jpg 写入到文件里,解密时先seek到文件末尾前三个字节,读出扩展名,然后再把文件中的其他部分读出来作为des解密的输入,然后还原

 

 

文件的类型是通过头文件来区别的,这个没错!
但是你这个问题比较简单,用不上去解析头文件!
只需要在原文件流的最前面加一个标致的字节就行了!
比如,原文件加密后的字节流为:43 55 73 02 
你在往文件中写的时候,在其前面加一个字节XX(01=JPG,02=BMP,03=GIF等)
如果原文件是JPG,则把流写成,01 43 55 73 02 
在解密时,首先读到第一个字节,进行判断类型,把其余的字节(43 55 73 02 )写到另外一个新流中进行解密就行了!

 

 

 

System.IO 命名空间里面提供了你要的具体操作功能实现。

大概是打开2个文件流,一个文件读文件,一个文件流写文件。

把写文件的,先写了标识,在把读文件的那个流的内容拷贝到写的里面。

写完以后,这个写文件输出,就是你要的文件了。
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值