我有一个需求就是将我的一些文件夹的内容同步到网盘上面去。但是我是不信任现在的各个网盘的,网盘的数据被我认为是会被泄露的数据,我需要同步的文件夹中,可能存在隐私的数据。于是我就想到了将文件夹里面的内容进行加密,将加密之后的内容再同步到网盘上面去。如此网盘泄露的数据是加密之后的数据,没有密码的前提下,其他人难以获取到我原本的文件内容。既然有这个需求,那就开发一个简单的应用吧。本文将告诉大家我开发的加密文件夹应用

这是一个在 GitHub 上使用最友好的 MIT 协议完全开源的项目,详细请看 https://github.com/lindexi/encryption_code_book

这个加密文件夹的应用的加密核心算法,现在选用的是我之前编写的加密算法。换句话说就是加密强度肯定高不到哪里去,介意慎用

核心加密算法提供了对二进制数据的加密和解密方法,只需要给定二进制数据和密码,即可进行加密。加密输出的是密文的二进制数据,将密文加上密码即可解密出原来的二进制数据

文件夹里的文件处理方式是遍历所有文件,建立 Index 文件。在 Index 文件里面记录了各个文件的信息,文件信息包括文件名、相对路径、最后的更改时间、文件大小、文件的SHA256哈希信息、文件加密之后存储的相对路径,文件加密时加的盐

文件夹的加密需求是考虑到文件夹需要同步的需求,意味着文件夹的加密是会进行多次,每次都有一些文件变更而有一些文件没有变更。通过记录文件的最后更改时间和文件长度,可以用来快速判断文件是否发生了变更。这个方法不够准确,但是也满足了我的需求。如果判断文件是否变更的方法是通过判断文件的内容,那自然是太慢了。只通过判断修改时间和文件大小,这是非常快速的

记录下文件的相对路径,如此可以方便加密文件夹时,还原信息。再记录文件的SHA256哈希信息,可以在还原之后进行判断是否文件损坏了,看看上传到网盘再下载下来是否投毒了

原本是对每个文件使用传入的密码进行加密的,但是由于文件里面可能存在大量的有规律的数据,为了减少统计学攻击方式的影响,这里就给文件加密时带上盐。需要原密码加上盐才能组出文件的加密或解密密码,如此可以提升一点点安全性。这里的盐是一段随机数。这里的盐的概念是加密相关的黑话,还请自行了解,大概意思就是在某个数据后面加上一些干扰的信息,从而提高安全

将所有的文件信息放入到 Index 索引里面,再将索引使用加密方法进行加密之后输出到 Index.data 文件即可

如此即可了解到解密过程就是先使用密码解密 Index.data 文件,如果密码错误,自然是解密不出来 Index 的内容的。解密成功之后,可以获取到各个文件信息,然后根据文件信息从加密后的文件解密出原文件,将原文件根据相对路径放入到输出文件夹

看看界面效果

界面没啥设计的,欢迎大家来参与开发,写一个漂亮的界面

卖点:

  • 自己写的加密算法,更加放心(?)

  • 完全开源的项目,没有啥藏坑

  • 不需要网络访问,不怕我偷偷上传密码

  • 密码是 int 数组,支持中文作为密码(说的好像 byte 数组不支持中文一样)

  • 支持文件夹多次加密,多次加密只记录变更文件,支持历史记录

  • 基于 .NET 7 开发,但是没有用上多少 .NET 7 的新功能

特点:

  • 加密本身的输入二进制数据不受限制,意味着可以叠加多个加密过程,压缩也是加密哦
  • 加密之后会填补空白,填补到 1024 的倍数。这就意味着想通过文件大小猜出内容是比较凉
  • 加密之后会填补空白,加密输出的文件夹的大小会比原来的文件夹大一些

下载地址: https://github.com/lindexi/encryption_code_book/releases

如下载不下来,可以发邮件向我要此软件

更多的细节那就需要请大家去看看源代码了

更多有趣的应用的开发请看 博客导航

WPF 制作一个加密文件夹应用的更多相关文章

  1. Mac怎么创建加密文件夹

    对于一些使用Mac工作生活有特殊要求以及职业要求有限制的用户来说,加密自己的工作内容以及隐私是非常重要的一件事情.往往用户需要加密的内容项目很多,这个时候我们就需要一个加密文件夹来包含这些内容.那么M ...

  2. 无需软件windows如何加密文件夹

    在百部百科上看到,放在博客中以便查看. 1.首先打开记事本,当然如果你的电脑里装有类似notepad++的文本编辑软件的也可以,但是不能用word.用这类软件好处是代码高亮,看上去舒服,减少错误率. ...

  3. WPF:自定义Metro样式文件夹选择对话框FolderBrowserDialog

    1.前言 WPF并没有文件选择对话框,要用也就只有使用Winform版的控件.至今我也没有寻找到一个WPF版本的文件选择对话框. 可能是我眼浊,如果各位知道有功能比较健全的WPF版文件选择对话框.文件 ...

  4. 用cmd加密文件夹

    随着电脑的广泛应用,个人电脑的私人空间越来越大,很多人喜欢把个人的一些私隐的文件存放在电脑上,私隐文件当然是不想别人看到的,为了防止别人看不见自己的文件,可以有很多的方法,今天在网上看了一些文档,学会 ...

  5. 用cmd命令加密文件夹

    比如新建一个叫“大学财务”的文件夹,我希望这个文件夹下的内容是加密隐藏的. 查看的时候需要点击“大学财务.bat”这个文件,然后输入设置的密码即可. Cls @ECHO OFF title Folde ...

  6. C++ 一个统计文件夹下所有代码文件行数的小工具

    // CodeLines.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Commdlg.h> #inclu ...

  7. python找递归目录中文件,并移动到一个单独文件夹中,同时记录原始文件路径信息

    运营那边有个需求. 下载了一批视频文件,由于当时下载的时候陆陆续续创建了很多文件夹,并且,每个文件夹下面还有子文件夹以及视频文件,子文件夹下面有视频文件或者文件夹 现在因为需要转码,转码软件只能对单个 ...

  8. Java高级应用(一个)-文件夹监控服务

    最近.在研究一些比较成熟的框架.他们还发现,他们中的一些相当不错的文章.现在,对于一些在你们中间一个简单的翻译(版的英文文章,非常有帮助). 译:原文链接 你有没有发现,当你编辑一个文件.同一时候使用 ...

  9. 如何编写一个工程文件夹下通用的Makefile

    新建工程文件夹,在里面新建 bsp.imx6ul.obj 和project 这 3 个文件夹,完成以后如图所示: 新建的工程根目录文件夹 其中 bsp 用来存放驱动文件:imx6ul 用来存放跟芯片有 ...

  10. Linux下迅速删除一个大文件夹

    rsync -av --delete /tmp/null/ ./        迅速删除大文件夹,如缓存 快速删除大目录(即大量文件)1.先建立一个空目录 mkdir /data/blank 2.用r ...

随机推荐

  1. golang sync.Map之如何设计一个并发安全的读写结构?

    在 golang中,想要并发安全的操作map,可以使用sync.Map结构,sync.Map 是一个适合读多写少的数据结构,今天我们来看看它的设计思想,来看看为什么说它适合读多写少的场景. 如下,是g ...

  2. Python基于Excel生成矢量图层及属性表信息:ArcPy

      本文介绍基于Python中ArcPy模块,读取Excel表格数据并生成带有属性表的矢量要素图层,同时配置该图层的坐标系的方法. 1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有 ...

  3. 你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.什么是SPA SPA(single-page application),翻译过来就是单页应用SPA是一种网络应用程序或网站的模型,它通 ...

  4. Kubernetes客户端认证(三)—— Kubernetes使用CertificateSigningRequest方式签发客户端证书

    1.概述 在<Kubernetes客户端认证(一)-- 基于CA证书的双向认证方式>和<Kubernetes客户端认证(二)-- 基于ServiceAccount的JWTToken认 ...

  5. Redis(5)——亿级数据过滤和布隆过滤器

    一.布隆过滤器简介 上一次 我们学会了使用 HyperLogLog 来对大数据进行一个估算,它非常有价值,可以解决很多精确度不高的统计需求.但是如果我们想知道某一个值是不是已经在 HyperLogLo ...

  6. 金仓数据库kbcrypto 插件实现sm加密算法

    首先介绍一下sm4 算法 SM4 算法是对称加密算法,国标 GB/T 32907 对 SM4 对称加密算法进行了详细描述.SM4 算法密钥长度固定为128bit,加密解密采用相同的密钥,加解密速度较快 ...

  7. KingbaseES V8R6集群运维案例之---自动清理集群主库wal日志

    ​ 案例说明: 在KingbaseES V8R6 主备流复制的集群,配置复制槽(replication slot).复制槽提供了一种自动化的方法来确保主控机在所有的后备机收到 WAL 段 之前不会移除 ...

  8. Java数据类型转换,字符串(String)转日期(Date)

    Java类型转换,字符串(String)转日期(Date) import java.text.ParseException; import java.text.SimpleDateFormat; im ...

  9. 2024年:如何根据项目具体情况选择合适的CSS技术栈

    2024年:如何根据项目具体情况选择合适的CSS技术栈 (请注意,这是一篇主观且充满个人技术偏好的文章) 方案一: antd/element ui/类似竞品 适合情形: 项目没有设计师 or 大部分人 ...

  10. #费马小定理,BSGS#BZOJ 3285 离散对数解指数方程

    题目 求最小的正整数 \(x\) 满足 \(g^{ax+b}\equiv c\pmod p\) 其中 \(p\) 是一个质数, \(g,a,b,c\leq 10^{1000000},p\leq 2^{ ...