- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我从来没有做过任何加密或解密,所以我决定加入并尝试制作类似于 FolderLock 的东西。以下问题以设计题为主,但也夹杂了一些编码题。
http://www.newsoftwares.net/folderlock/
无论如何,我处于初始阶段并且有一些初步问题。
加密文件夹时,实际上是在加密文件夹内的所有文件,而不是文件夹本身,因为文件夹无法加密。对吗?
此外,我已经编写了我的加密/解密代码,但我想将密码与代码一起合并。我的计划是,当用户选择要加密的文件夹/文件时,让他们设置一个密码,该密码将链接到解密文件夹/文件所需的 key 。好主意还是坏主意?有人有更好的建议吗?我正在讨论为程序本身设置一个密码,该密码也可以解锁任何加密的文件/文件夹...
如何更改 Windows 7 中的文件夹(我已加密)以在打开时要求输入密码,而不是只打开并显示所有加密文件?
最后,当您加密一个文件时,(按照我目前的代码编写方式)您最终会得到加密的原始文件和该文件的加密版本。我确定我知道这个问题的答案,但我是否删除原始版本并保留加密版本?如果由于某种原因解密失败并且我没有文件备份怎么办?我是否也应该创建文件备份?
感谢您的帮助!我确实尝试用谷歌搜索上述问题,但似乎大多数这样做的人的水平都比我高得多,所以我没有找到很多有用的答案。
编辑:让我解释一下,虽然我正在尝试创建类似于 FolderLock 的东西,但这仅供我学习。我并不是要创建商业上可行的应用程序,只是做一些有趣的事情并同时学习。
最佳答案
如何加密文件和文件夹不是一个只有一个答案的问题。当我们谈论 Windows 环境时,您可以在大致三个不同级别加密文件:
Hard disk Encryption :在这种情况下,您加密了整个硬盘,这意味着整个磁盘都被加密了。 BitLocker就是一个例子。在这种情况下,您可以加密除主引导记录之外的所有内容。写入硬盘的每个字节都经过加密,包括操作系统。
过滤驱动程序或文件系统加密:您可以编写自己的过滤驱动程序或文件系统驱动程序,以便在文件写入磁盘时有选择地透明地加密和解密文件。大多数针对业务的加密解决方案都提供这种功能。 Microsoft 有自己的解决方案,形式为 Encrypting File System .这样做的好处是它可以更好地与操作系统集成,加密的文件和文件夹对所有其他应用程序来说就像普通文件一样。 TrueCrypt是另一个进行这种加密的程序,它是开源的,因此您可能想看一看。
应用程序级加密:您还可以在应用程序级加密文件,就像我想说的那样。如果您不编写自己的过滤器驱动程序,您将无法超越此级别。这意味着您以类似于使用 WinZip 压缩文件的方式加密文件。其他应用程序可以看到加密文件作为不同格式的文件,而不是原始格式。从本质上讲,它与使用 WinZip/WinRAR 压缩文件没有太大区别,除了您不压缩而是加密它。如果您使用 WinZip 压缩一个文件夹,它仍会被压缩成一个文件。如果您在此级别进行加密,则与加密相同。您可以为 Windows 资源管理器编写 shell 扩展,使其“看起来”像一个文件夹,但本质上它仍然是一个文件,您将无法从另一个应用程序“另存为...”到该文件夹中。例如,如果您双击该文件,您可能还需要提供用于浏览文件夹的 GUI。
我假设您要编写一个将在应用程序级别进行加密的应用程序。在这种情况下,您应该意识到我上面提到的这种方法的局限性。
关于您的问题:
您可以将文件夹加密到一个容器中,再想想 WinZip/WinRar,或者您可以将文件夹中的每个文件分别加密到它们单独的文件中。
对于密码/ key 的使用,我的建议是使用随 secret 钥来加密实际数据。然后,您使用从一个或多个密码派生的 key 在单独的 key 槽中加密此 key 。这将允许您为一个文件设置多个密码。至于算法,我推荐 AES-128,因为它是一种经过充分验证且速度非常快的算法。要使用 AES,您需要创建一个特定长度的 key 和 IV(AES-128 各 128 位)。创建这些 key 的最佳方法是使用 Rfc2898DeriveBytes使用用户输入的实际密码。不要忘记 HMAC您应该使用它来验证文件的实际解密是否正确。您可以使用 HMAC 仅验证随 secret 钥是否已正确解密,这意味着您无需对整个内容运行 HMAC。
为此,您需要编写一个 shell 扩展,但这只能让您到此为止。例如,您将无法将文件从 word 保存到加密文件夹中,因为这实际上只是加密文件的容器格式。
我建议您让用户自行创建文件备份。删除的任何文件也应该是 wiped securely ,因为简单的删除不足以从文件系统中删除文件的所有痕迹。
关于c# - 加密/解密初学者问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6629485/
我正在使用框架的对象编写一个用于加密/解密的简单库。方法如下: public static byte[] Encrypt(byte[] key, byte[] vector, byte[] input
据我所知,RIM Crypto API 似乎只提供用于对称加密 (3Des) 的 PKCS5 填充模式。我正在使用 JDE 4.6.0。 我正在尝试为黑莓应用程序提供密码学,该应用程序需要与已经使用标
我已经获得了用于加密的 Java 实现,但遗憾的是我们是一家 .net 商店,我无法将 Java 整合到我们的解决方案中。可悲的是,我也不是 Java 专家,所以我已经为此苦苦挣扎了几天,我想我终于可
我正在尝试使用 KMS 和 AWS 加密 SDK 加密数据。查看 AWS documentation 中提供的示例,似乎没有地方可以明确设置数据 key 。 我找到了 EncryptionMateri
我目前有一个用于为我的网站制作哈希的代码,该代码使用 SALT 进行哈希处理,因此密码是不可逆的...... 目前它是 100% 为我的网站工作,它是使用 ASP.NET(C#) 编码的 这是我的代码
我想要做的是在 javascript 中生成一个 key 对,并在 PHP 中使用这些加密,然后用 JS 解密。 我在附加的代码中有两个问题 它不会从装甲文本块重新加载私钥 并且它不会解密 PHP 加
在进行密码哈希时,我有以下 node.js 代码。 body.password = covid@19 salt = "hello@world" body.passwordhex = crypto.cr
我想知道的是在配置文件中加密连接字符串的明确方法。以下是我的问题: 使用机器级加密,访问我的服务器的任何人都不能编写一个小的 .Net 程序来读取连接字符串的内容吗? 如果我将我的应用程序部署到企业环
我知道 rsync 可以在文件传输期间启用/禁用 ssh 加密协议(protocol)。那么,如果 ssh 加密协议(protocol)被禁用了,是不是意味着 rsync 根本不做任何加密呢? 另外,
脚本必须搜索网页内的字符串。但该脚本不应显示它正在搜索的字符串。我的意思是搜索字符串应该采用加密格式或任何其他格式。但如果没有该搜索字符串,则不应显示网页或应在页面上显示错误。 我要开发一个插件。如果
我正在尝试加密 MySQL 上的某些字段。我正在使用 TPC-DS 的 v2.8 版本,并尝试在客户地址表的某些列上使用 AES。知道如何加密字段的所有行吗?我尝试使用 UPDATE customer
我需要一个简单的 javascript 函数,它允许我使用 key 加密 textarea 数据( key 是存储为散列 session 变量的用户密码,由 PHP 打印到字段中) 我基本上希望在用户
如何在 JavaScript 中散列/加密字符串值?我需要一种机制来隐藏 localStorage/cookie 中的一些数据吗? 这与安全问题有关,但我想为我的数据提供一些保护。 最佳答案 有很多
我有一个程序,其中数据库的密码由远程用户设置。该程序将用户名和密码保存到 xml 文件中的加密字符串中,否则应该是人类可读的。现在,这工作正常,我使用带有 key 的 C# DES 加密,它被加密和解
Kotlin 中是否有任何关于椭圆曲线加密的信息? 用于生成 key 对和加密、解密消息。 关于这个主题的信息很少甚至没有。 例如,我想实现 ECC P-521 椭圆曲线。 是否可以在 Kotlin
所以我知道 MD5 在技术上是新应用程序的禁忌,但我随机想到了这个: 自 md5($password); 不安全,不会 md5(md5($password)) 是更好的选择?我使用它的次数越多,它会变
我一直在努力使用 crypto_secretbox_easy() 在 libsodium 中加密/解密一些数据| .我似乎找不到关于使用的任何好的文档。 我想从用户那里获取密码,用它来以某种方式制作
我正在做一个加密项目 视频,我对这个程序有几个问题。 我用命令转码mp4至HLS与 ts段持续时间约为 10 秒。 首先,我需要使用数据库中的 key 加密这些视频。然而, 我不知道是否使用 ffmp
我有一个加密/复制保护问题。 我正在为使用加密狗的公司编写应用程序。请不要告诉我软件保护是没有用的,或者我应该让它自由地飞向空中,或者我花任何时间这样做都是浪费;这不是关于软件保护有效性的哲学问题,更
我对 有一个疑问VIM 加密 key . 我有一个文本文件,我使用加密该文件 :X 现在,加密 key 的存储位置(路径)。 无论是存储在单独的文件中还是存储在文本文件本身中。 如果我打开文件,它会询
我是一名优秀的程序员,十分优秀!