您的位置: 我要加密首页 >> 加密软件 >> 阅读文档:【转】自制文件加密器

【转】自制文件加密器

[ 作者:hbxfxyh | 更新日期:2007-10-4 09:50:39 | 阅读次数: | 评论 0 条 | 我要投稿 ]
最近一直在看黑防,但是发现编程解析栏目都没有介绍JAVA程序设计的。难道是大家都认为JAVA比不上C++么?本人学习JAVA有一段时间了,这里斗胆写一篇JAVA编程的文章权作抛砖引玉吧。
小知识:流是字节序列的抽象概念。文件输入输出设备,网络,内存,内部进程通信管道,TCP/IP套接字等设备传输的数据序列都可以理解为流。流提供了一种用统一的方法从各种输入输出设备中读去或写入数据的方法。
注:文件是数据的静态形式而流则是数据的动态形式。
这个小程序的作用是文件加密,这里用到了两个主要的类是:java.io包中的BufferedInputStream和BufferedOutputStream。它们提供了两个缓冲区的包装类,不管底层系统是否使用了缓冲区,他们都能在自己的事例对象中创建缓冲区。
那么提供缓冲区的好处有哪些呢?
其实对I/O进行缓冲是一种常见的性能优化的方式。缓冲流为I/O流增加了内存缓冲区,增加缓冲区的目的有两个:
1:容许JAVA程序一次不止操作一个字节,这样提高了程序性能。
2;由于有了缓冲区,使得在流上执行Skip、Mark、Reset方法都成为可能。
我来分析一下主要代码:
import java.io.*;//首先要倒入代码中要用到的类,这里我将整个包都倒入了,这不是个好习惯在资源非常紧张的手机等设备上就不要这样倒入,这里是为了方便! 字串6
public class Fi
{
String FileName;
Fi(String FileName)
{
this.FileName=FileName;
}
void yun()throws Exception
//由于在对文件的操作中经常会抛出异常这里我们将其抛 出让调用方去自行处理
{
FileInputStream fi=new FileInputStream(FileName);
File f=new File(FileName);
//因为要对文件进行操作所以定义上面两个类的对象,File类是IO包中唯一代表磁盘文件身
信息的类,而不是文件内容。可以表示如表示文件的创建日期等。其实这个类和C++中的_stat结构体的作用是一样的!
long gg=f.length();
int d=(int)(gg/1024);
int g=(int)(gg%1024);
//产生这两个变量是为了防止文件过大超出int型变量的表示范围
int a=0;
int q=0;
byte[]b=new byte[d*1024+g];
for(int i=0;i<d*1024+g;i++)
{
if((a=fi.read())!=-1)
{
b=(byte)a;
}
else
{
q=i;
break;
}
}
//这个循环不断读取文件内容到这个字节数组中。
ByteArrayInputStream bi=new ByteArrayInputStream(b);
ByteArrayOutputStream bo=new ByteArrayOutputStream(d*1024+g);
字串7

this.trom(bi,bo);//调用关键函数将文件加密
byte []bc=bo.toByteArray();
System.out.println(bc.length);
FileOutputStream ff=new FileOutputStream(FileName);
ff.write(bc);//将加密后的数据写入文件
ff.close();

}
void trom(InputStream i,OutputStream o)throws Exception
{
int a=0;
while(true)//做一个死循环来不断读取数据
{
a=i.read();
if(a!=-1)
{
int c=((byte)a & 0x0f)<<4;//将一个字节的数据和0xf进行与操作保留低4位,然后将其再左移4位。
int b=(byte)c | (byte)a>>>4 & 0x0f; //将原始数据先右移4位再将其和0xf与保留高4位,然后将两个数进行或操作。这时就完成了整个加密操作就是将一个字节的低4位和高4位相互换位置。
o.write(b);
}
else
{
return;
}
}
}
}
www.51jiami.net

Tags:自制 文件 加密器
来源:
您的评论
用户名:新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为