Chr*_*rre 9 c# encryption cryptography aes rijndael
我正在玩一个应用程序将文件备份到"云":)我想在存储之前加密文件.这部分我已经介绍过,但是由于这个应用程序将监视文件夹以进行更改并上传更改的文件,我需要存储用于加密文件的密钥.想法是用户提供密码并生成密钥.
目前我正在使用.NET Framework进行加密.我正在使用RijndaelManaged类来加密/解密,而使用PasswordDeriveBytes类来获取密钥.
但是,我应该如何保留用于加密文件的密钥?我也希望程序从Windows开始,而不需要让用户再次输入密码.
Tai*_*ils 14
我建议避免使用非对称加密来加密文件.与同等强度的对称加密算法相比,非对称加密(计算上)更加昂贵.对于加密大文件,我建议任何一天使用AES over RSA.
至于你的问题 - 数据保护API(DPAPI)Gaurav提到的是你在Windows上最好的选择.如何:使用数据保护
DPAPI提供ProtectedMemory和ProtectedData.前者允许你保护内存中的秘密,后者可以保护持久存储到磁盘的秘密.API负责为您加密和解密,并且(取决于指定的范围)将保护您的数据不被其他用户或其他计算机访问/解密.
要在您的方案中使用DPAPI,我建议使用用户密码,生成对称加密密钥(例如PasswordDeriveBytes),使用DPAPI存储密码并限制对当前用户的访问.
您的应用程序可以使用该密钥加密所有上载.您的应用程序可以在不重新提示用户的情况下获取密钥,并且用户可以在新系统上重新生成密钥.
一个缺点是同一用户也执行的恶意应用程序可能会获得密钥.为了防止这种情况,必须在Protect&Unprotect中提供额外的熵(实际上是盐).然而,实现这一点可能会偏离您的目标 - 因为现在您需要提示用户提供看起来非常像密码的东西.
另外:有趣的阅读:
您也可以从Backblaze中找到这篇有趣的读物.虽然他们没有解释他们如何支持您的方案(云提供商无法破译的加密上传 - 只有他们提供此类服务):http: //blog.backblaze.com/2008/11/12/how-to-make -强加密,易于使用/
免责声明:我是一个满意的Backblaze客户,但我没有其他任何方式与他们的服务有关.
PS:请花时间标记可接受的答案.社区会奖励你.
| 归档时间: |
|
| 查看次数: |
12186 次 |
| 最近记录: |