前言
在前一篇博客《字节流运算实现文件的加密解密1.0》里介绍了实现文件的加密解密的原理。因为读取文件方法使用的是FileInputStream对文件加密时效率较低,优化为使用BufferedOutputStream提升效率。
遗留的思考:字节运算超出范围,但还是可以正常加密解密。
简述
使用BufferedInputStream提升读取效率
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
private static byte[] readBytes(File file) { try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { byte[] flush = new byte[(int) file.length()]; while (bis.read(flush) != -1) { return flush; } } catch (IOException e) { e.printStackTrace(); } return new byte[0]; }
|
字节运算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
private static byte[] bytesAddSalt(byte[] bytes) { for (int i = 0; i < bytes.length; i++) { bytes[i] = (byte) (bytes[i] + SALT); } return bytes; }
private static byte[] bytesSubSalt(byte[] bytes) { for (int i = 0; i < bytes.length; i++) { bytes[i] = (byte) (bytes[i] - SALT); } return bytes; }
|
总结
以上两篇博客便是介绍操作文件流对文件进行加密解密的具体原理,使用该方法可以对文件本身实现深加密。
那什么是电脑文件?
来自某度的解释:电脑文件,也可以称之为计算机文件,是存储在某种长期储存设备或临时存储设备中的一段数据流,并且归属于计算机文件系统管理之下。
深加密:对文件数据流进行加密,本质上文件已经被修改,文件无法打开或打开乱码。
难破解,可以对重要文件加密。
浅加密:不修改文件数据流,本质上文件并没有被加密。
常见方式:修改文件名称使文件无法打开、修改、删除或替换文件图标为系统图标;隐藏文件或路径。
很容易被破解,可以防止菜鸟偷看。
我的实现只是简单的对文件进行数据流加密,可以用来学习,还可以再优化。
完整代码地址:https://gitee.com/mwk719/spring-learn/blob/master/src/main/java/com/mwk/encrypt/FileEncryptAndDecryptSalt_2.java