美国国防部机密文件销毁算法
美国国防部机密文件销毁算法
当我们在系统里“删除”了一个文件时,并不意味着这个文件就一定从磁盘上清除了,很多优秀的文件恢复软件都可以恢复被删除的文件,这在一定程度上就带来了隐私泄露的隐患。好在现在很多软件,比如360、电脑管家等等软件都集成了文件粉碎的实用功能。今天介绍一种以前被用于美国国防部的机密文件销毁算法,并附上实现的代码(C)。
算法介绍:
美国国防部DOD5220.22M文件销毁标准包括以下三步:
- 将文件先用0x00覆盖,再用0x01覆盖,如此重复三次;
- 将文件用一个随机值覆盖;
- 将文件名改为一个单字符文件名,最后删除之。
算法可靠性验证:
此算法虽然已经不再被美国国防部采用,但也足够应付一般的环境,主流文件恢复软件恢复的可能性还有待验证。
实现:
![](/assets/blank.gif)
1 /*
2 * File Destroyer 文件安全销毁
3 *
4 * Copyright (C) 2015 Chaobs
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 *
19 * E-mail: chaobs@outlook.com
20 * Blog: www.cnblogs.com/chaobs
21 *
22 * 用法: file-destroyer [filename1] <filename2>...
23 *
24 * 算法介绍:
25 * 基于美国国防部DOD5220.22M标准进行文件销毁,包括以下三步:
26 * (1)将文件先用0x00覆盖,再用0x01覆盖,如此重复三次;
27 * (2)将文件用一个随机值覆盖;
28 * (3)将文件名改为一个单字符文件名,最后删除之。
29 *
30 * 算法可靠性验证:
31 * 此算法虽然已经不再被美国国防部采用,但也足够应付一般的环境,对于主流文件恢复软件恢复的可能性还有待验证。
32 *
33 */
34
35 #include <stdio.h>
36 #include <stdlib.h>
37 #include <time.h>
38
39
40 void notice(int i, char *s); /* print short notice */
41
42 void wipe(FILE *f, char c); /* core func */
43
44 long file_size(FILE *f); /* get the size of a file */
45
46 int require(int c, char *s[]);
47
48
49 int main(int argc, char *argv[])
50 {
51 int i, j;
52 char ch;
53
54 FILE *f;
55
56 notice(1, argv[0]);
57
58 if (argc < 2) {
59 /* too few arguments */
60 notice(2, argv[0]);
61 exit(0);
62 }
63
64 if (!require(argc, argv)) {
65 fprintf(stderr, "Cancel Operating.\n");
66 exit(0); /* cancel */
67 }
68
69 srand(time(NULL)); /* randomize */
70
71 for (i = 1; i < argc; ++i) {
72 /* process each file */
73
74 if ((f = fopen(argv[i], "r+b")) == NULL) {/* fail to open file */
75 fprintf(stderr, "Error when open %s:\n", argv[i]);
76 exit(0);
77 }
78
79 for (j = 0; j < 3; ++j) {
80 /* DOD5220.22M Step 1 */
81 wipe(f, 0x00);
82 wipe(f, 0x01);
83 }
84
85 wipe(f, rand() % 256); /* Step 2 */
86
87 if (rename(argv[i], "C")) {
88 /* Step 3*/
89 fprintf(stderr, "Error when rename %s\n", argv[i]);
90 exit(0);
91
92 /* XXX:文件名冲突的解决?可以考虑使用tmpnam()吗?*/
93 }
94
95 remove("C"); /* XXX:如果是一个符号连接怎样保证删除的是真正的文件? */
96 fclose(f);
97 }
98
99 printf("Done! Destroy %d files\n", argc - 1);
100
101 return 0;
102 }
103
104
105 /* implementation */
106
107 void notice(int i, char *s)
108 {
109 if (i == 1) {
110 printf("\nFile Destroyer Copyright (C) 2015 Chaobs\n");
111 printf("This program comes with ABSOLUTELY NO WARRANTY.\n");
112 printf("This is free software, and you are welcome to redistribute under certain conditions.\n\n");
113 } else {
114 fprintf(stderr, "Usage: %s [filename1] <filename2> ...\n", s);
115 }
116 }
117
118 void wipe(FILE *f, char c)
119 {
120 long i;
121
122 for (i = 0; i < file_size(f); ++i)
123 fwrite(&c, 1, 1, f); /* overwrite */
124
125 }
126
127 long file_size(FILE *f)
128 {
129 long len;
130 fseek(f, 0, SEEK_END); /* jump to the and of file */
131 len = ftell(f);
132 fseek(f, 0, SEEK_SET); /* restore */
133 }
134
135
136 int require(int c, char *s[])
137 {
138 int i;
139 char ch;
140 for (i = 1; i < c; ++i) {
141 /* FIXME: the comfirm function can make mistakes and
142 * it is not convenient even can't work in some cases.
143 */
144 printf("Do you want to destroy %s ?(y/n) ", s[i]);
145 ch = getchar();
146 getchar(); /* '\n' */
147 if (ch == 'n')
148 return 0;
149 }
150
151 return 1;
152 }
![](/assets/blank.gif)
当然这样的实现有一个显著缺点——当文件很大时,删除将会占用大量时间,感兴趣的可以自己改进。
This is free software, and you are welcome to redistribute itunder certain conditions
美国国防部机密文件销毁算法相关推荐
- 支付宝 “集五福”今日开启;小米起诉美国国防部;Chrome 再次屏蔽七个端口 | 极客头条...
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 丁恩华 出品 | CSDN(ID:CSDNnews ...
- 2017-2042美国国防部无人系统路线图
路线图背景.目的及内容 美国国防部已经在所有的作战环境中使用无人系统,为确保国防部相关投资真正用于推进无人系统技术和作战使用,于2018年8月30日发布了<2017-2042财年无人系统综合路线 ...
- 价值100亿美元!微软刚刚击败亚马逊,拿下美国国防部十年云计算基建订单
大数据文摘授权编译自<纽约时报> 编译:李雷.曹培信.刘俊寰 为期10年,价值100亿美元. 经过长达一年的竞标,微软接连击败了谷歌.IBM.Oracle和亚马逊,拿下了美国国防部云计算这 ...
- 美国国防部将把人工智能用于空战
美国国防部已着手研发可用于空战的人工智能.据New Atlas网站报道,智能军事无人机将负责打击载人舰船.人工智能将应用在Skyborg无人作战僚机上,无人机将具备自学能力.目前,美国国防高级研究计划 ...
- 揭秘:美国国防部用什么样的操作系统
一个国家政府使用的操作系统自然不同于企业和普通用户,它们对于安全性.稳定性等特殊性能的要求将会更高. 近日,编者发现一款据称是Software Protection Initiative美国空军研究实 ...
- 360文件粉碎机_中山三乡资料文件销毁粉碎销毁资料文件公司一览表
中山三乡资料文件销毁粉碎销毁资料文件公司一览表 安排搬运工作人员及运输车辆上门收取销毁物品,将需销毁的物品装上运输车辆,并进行拍照.车箱粘贴封条等工作.第五步:客户可安排工作人员,跟我公司销毁运输车辆 ...
- 高达100亿美元!美国国防部将IBM和甲骨文双双踢出了云计算合同;华为任正非说了,华为对向苹果等对手出售5G芯片保持开放的态度...
关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...
- Facebook陷入史上最大危机:近7000页机密文件泄露!
新智元报道 来源:综合theverge.arstechnica等 编辑:肖琴 [新智元导读]Facebook正在面临前所未有的危机:近7000页内部机密文件被泄露,曝光了Facebook如何将 ...
- 涉密文件检查工具_深圳龙华资料文件销毁粉碎销毁资料文件公司一览表
深圳龙华资料文件销毁粉碎销毁资料文件公司一览表 宝安区进行文件销毁保护品牌利益,销毁:形容*(物体)的毁灭性*,把一物烧掉,毁掉,销毁文件,销毁证据,不良产品,环保处理,销毁方案,过期产品,不合格产品 ...
最新文章
- AI在软硬件开发中的应用落地!
- matlab调用opencv的函数
- python字典里存字符_Python字典和字符串的学习
- 7-7 有重复元素的全排列 (10 分)(set容器做法思路加详解)
- MongoDB3.x中添加用户和权限控制
- c语言程序改错:求两个整数的最小公倍数,【C语言】求两个整数的最大公约数、最小公倍数...
- python服务器查看文件更改记录,python 查看远程服务器上的文件
- numpy中的对应元素相乘,可以使用广播
- 格力手机2刷机 格力手机二代刷机 GREE G0215D刷机教程
- python打包deb_python开发将项目打包成deb
- 深度学习核心技术精讲100篇(四十五)-商业DMP数据管理平台的架构与实践
- Linux DMA 框架介绍,demengine.c文件
- welsh-powell
- 非最小相位系统的闭环频域辨识算法
- php 的单例模式(一)
- 白塑投影幕布为何深受青睐?
- 湖南科技大学数据挖掘复习提纲
- CnOpenData中国各省份基于一级分类绿色专利授权数量统计
- 【职来职往经典语录】
- 办理ISO13485医疗器械质量管理体系认证认证的条件。
热门文章
- 第十讲 老子智慧与人际交往的识人
- Java前端学习(Day 1)
- java成果_java学习成果1 - chenxiao60的个人空间 - OSCHINA - 中文开源技术交流社区
- 看服务器时间修改日志,怎样看服务器远程更改时间记录
- 没人谈论的 3 种从 ChatGPT 赚钱的方法,我测试过的建立被动收入流的行之有效的方法
- ElementUI自定义主题报错“primordials is not defined”最佳解决方案
- 少了五毛钱不卖的酷炫火焰特效!3D粒子哦!
- Android project依赖project配置说明
- gitlab修改附件上传文件大小限制
- 广西大学计算机专业课代码,广西大学的代码是什么 广西大学代码