数据擦除算法

 

====================================================================

DoD 5220.22-M算法:

 

char dod [7];

typedef struct 

{

int   length;  

char* s;       

} dwipe_pattern_t

 

}

 

覆盖填充七次,定义dod元素值

dwipe_pattern_t patterns [] =

{

{  1, &dod[0] }, /* Pass 1: A random character.               */

{  1, &dod[1] }, /* Pass 2: The bitwise complement of pass 1. */

{ -1, ""      }, /* Pass 3: A random stream.                  */

{  1, &dod[3] }, /* Pass 4: A random character.               */

{  1, &dod[4] }, /* Pass 5: A random character.               */

{  1, &dod[5] }, /* Pass 6: The bitwise complement of pass 5. */

{ -1, ""      }, /* Pass 7: A random stream.                  */

{  0, NULL   }

};

 

随机读取元素存放入dod

 

r = read( c->entropy_fd, &dod, sizeof( dod ) );

 

把dod第1个元素反补后放入dod[1]

dod[1] = ~ dod[0];

 

把dod第4个元素反补后放入dod[5]

dod[5] = ~ dod[4];

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Python 中,由于文件系统的底层实现和操作系统的不同,直接通过编程的方式进行物理块擦除是非常困难的。通常情况下,我们无法直接控制文件存储在磁盘上的物理位置。 然而,你可以使用一些技术来尽量彻底删除文件,使其难以恢复。以下是一种常见的方法: ```python import os import random def overwrite_file(file_path, num_overwrites=3): try: file_size = os.path.getsize(file_path) with open(file_path, 'rb+') as file: for _ in range(num_overwrites): # 生成与文件大小相同的随机字节 random_bytes = bytearray(random.getrandbits(8) for _ in range(file_size)) # 将随机字节覆盖到文件中 file.seek(0) file.write(random_bytes) file.flush() os.fsync(file.fileno()) # 用0填充文件 with open(file_path, 'wb') as file: file.write(b'\x00' * file_size) file.flush() os.fsync(file.fileno()) print(f"文件 '{file_path}' 已成功块擦除。") except IOError: print(f"无法打开文件 '{file_path}'。") # 使用示例 file_path = 'path/to/your/file' # 替换为你要擦除的文件路径 overwrite_file(file_path) ``` 在这个示例中,我们首先进行了多次覆盖操作,每次都使用随机生成的字节覆盖文件内容。然后,我们使用全0字节来填充文件,以进一步混淆数据。这样做可以增加文件恢复的难度。 需要注意的是,即使采取了这些措施,仍然无法保证完全删除文件。对于敏感数据的处理,建议使用专业的数据删除工具或物理破坏存储介质。 请记住,在进行任何文件操作之前,请务必备份重要的文件,以防意外发生。 希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值