java 文件加密

System.out.println("文件:");
		String s = new Scanner(System.in).nextLine();
		File file = new File(s);
		if(! file.isFile()) {
			System.out.println("不是文件");
			return;
		}		
		System.out.print("KEY:");
		int key = new Scanner(System.in).nextInt(); 
		try {
			encrypt(file, key);
			System.out.println("完成");
		} catch (Exception e) {
			System.out.println("失败");
		}
		

	}

	private static void encrypt(
			File file, int key) throws Exception{
		RandomAccessFile raf = 
		 new RandomAccessFile(file, "rw");
		
		//单字节读取标准格式
		//int b;
		//while((b = raf.read()) != -1) {
		//	b ^= key; //b = b^key;
		//	raf.seek(raf.getFilePointer()-1);        
		//	raf.write(b);
		//}
		
		// 8k 8192
		byte[] buff = new byte[8192];
		int n;//保存一批的数量
		while((n = raf.read(buff)) != -1) {
			//数组中前n个字节加密
			for(int i=0;i<n;i++) {
				buff[i] ^= key;
			}
			//下标移回n个位置
			raf.seek(raf.getFilePointer()-n);
			//输出数组中前 n 个字节
			raf.write(buff,0,n);
		}
		
		
		raf.close();
	}

  

猜你喜欢

转载自www.cnblogs.com/xiaokaivip/p/9240174.html