admin管理员组文章数量:1650782
1.思路:加密:将一个原始文档和一个密码进行异或操作,得到一个加密二进制文件。
解密:将加密的文件和用一个密码进行异或操作,得到原始文档。
2.代码:
import java.io.*;
import java.nio.charset.StandardCharsets;
public class FIle {
private static final int numOfEncAndDec = 0x99; //加密解密秘钥
private static int dataOfFile = 0; //文件字节内容
public static void main(String[] args) {
File f1 = new File("F:\\J\\f1.txt"); //初始文件
File f = new File("F:\\J\\f.txt"); //加密文件
File f2 = new File("F:\\J\\f2.txt"); //解密文件
//创建文件
try {
System.out.println(f1.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
try {
System.out.println(f.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
try {
System.out.println(f2.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
try {//对文件写入内容
writeFile(f1,f2);
} catch (Exception e) {
e.printStackTrace();
}
try {//加密操作
EncFile(f1, f);
} catch (Exception e) {
e.printStackTrace();
}
try {//解密
DecFile(f,f2);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void writeFile(File f1,File f2) throws Exception{
if(!f1.exists()){
System.out.println("文件不存在");
return;
}
if(!f2.exists()){
System.out.println("文件不存在");
f2.createNewFile();
}
//IO流写入
FileOutputStream fo1 = new FileOutputStream(f1);
FileOutputStream fo2 = new FileOutputStream(f2);
fo1.write("f1.txt的访问".getBytes(StandardCharsets.UTF_8));
fo2.write("f2.txt对f1.txt加密文档的访问的访问\n".getBytes(StandardCharsets.UTF_8));
fo1.flush();
fo1.close();
fo2.flush();
fo2.close();
}
private static void EncFile(File f1, File f) throws Exception {
if(!f1.exists()){//判断是否有此文件
System.out.println("文件不存在");
return;
}
if(!f.exists()){
System.out.println("文件不存在");
f.createNewFile();
}
FileInputStream fis = new FileInputStream(f1);
FileOutputStream fos = new FileOutputStream(f);
while ((dataOfFile = fis.read()) > -1) {
fos.write(dataOfFile^numOfEncAndDec);//对文件进行加密,将文件和秘钥进行异或操作。
}
fis.close();
fos.flush();
fos.close();
}
private static void DecFile(File f, File f2) throws Exception {
if(!f.exists()){
System.out.println("文件不存在");
return;
}
if(!f2.exists()){
System.out.println("文件不存在");
f2.createNewFile();
}
FileInputStream fis = new FileInputStream(f);//读取加密文件
FileOutputStream fos = new FileOutputStream(f2,true);//f2.txt文档可以添加文本
while ((dataOfFile = fis.read()) > -1) {
fos.write(dataOfFile^numOfEncAndDec);//再次进行异操作,提取文件,写入f2.txt.
}
//文档关闭
fis.close();
fos.flush();
fos.close();
}
}
4.结果到文档所在处进行查看,注:没F盘的小伙伴,文档路径可根据自己电脑进行修改。
小小代码奉上,希望有所帮助。
版权声明:本文标题:java用异或进行文档的加密 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729527222a1204714.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论