C# net中的AES加密

C# net中的AES加密,c#,.net,encryption,C#,.net,Encryption,如何在C#.NET中使用AES加密文件,然后安全地删除文件的本地副本 有人能给我举一个好例子说明如何做到这一点吗 AES是.NET 3.5中可用的最强加密吗 1) 如果不破坏文件系统的内部结构,就无法安全地删除文件。 2) 这取决于您对“更强”的定义。您可能希望在.NET framework中的加密教程中看到类似的内容,因为您需要决定许多设置。 删除文件有点棘手。您可能希望在文件上写入与要删除的文件大小相同的零 然后删除该文件。这样的话,如果有人把你的硬盘拆开,硬盘里应该主要是零 我更喜欢

如何在C#.NET中使用AES加密文件,然后安全地删除文件的本地副本

有人能给我举一个好例子说明如何做到这一点吗

  • AES是.NET 3.5中可用的最强加密吗

  • 1) 如果不破坏文件系统的内部结构,就无法安全地删除文件。

    2) 这取决于您对“更强”的定义。

    您可能希望在.NET framework中的加密教程中看到类似的内容,因为您需要决定许多设置。

    删除文件有点棘手。您可能希望在文件上写入与要删除的文件大小相同的零

    然后删除该文件。这样的话,如果有人把你的硬盘拆开,硬盘里应该主要是零

    我更喜欢IDEA或Twofish,但AES可以工作,这取决于生成的密钥大小

    更新:我倾向于使用Bouncycastle的库进行加密,因为我发现它很容易使用,而且通常对我来说效果更好。
    如果您下载源代码,您可以获得一些可能会对您有所帮助的示例。

    如果您希望接收一个文件并对其进行加密,那么您可能从错误的角度来处理您的问题。正如其他人提到的,没有一种简单的方法可以安全地删除文件

    作为替代方案,您可能希望使用类似的方法设置加密分区或文件夹,并在收到文件后立即将其放入加密分区


    使用c#编写加密例程可能看起来相当琐碎,但如果对加密相关问题没有很好的了解,很有可能会出错,例如密钥管理或选择错误的块加密模式。

    除非深入研究不安全的代码,否则无法安全地删除,上面有一个例子,但是您最好找到一个命令行程序,比如从应用程序中调用它,您必须使用不安全的代码

    最强的加密很难调用,特别是当您将密钥大小考虑在内时。有针对AES的最大密钥大小(256位)的攻击,但其中许多攻击取决于特定版本,攻击实现而不是算法,针对算法的攻击仍然非常复杂-如果你每次都像应该的那样旋转密钥,那么你真的没有什么可担心的。如果您担心托管代码的实现,那么应该打开,但这会影响整个操作系统。这将限制您使用DESCryptoServiceProvider/tripledscryptoserviceprovider进行对称加密,使用DSACryptoServiceProvider/RSACryptoServiceProvider进行非对称加密

    在C#中使用AES生成对称密钥和IV,并使用带有自签名证书的RSA将AES密钥和IV存储在文件中。 要解密,它将使用RSA对密钥文件进行解密,然后使用RSA将加密文件解密回原始文件


    当然,您可能需要修改,但我认为这是C#中加密的一个不错的往返示例。

    +1对于第1点),简单的删除将使原始文件由Dos时代的取消删除程序拾取。1)因此不可能通过托管代码安全地删除文件?2) 我是说最安全的。我读过一篇文章,说AES理论上已经被打破,它的寿命已经缩短。AES仍然是最好的选择。最近发生了一次攻击,涉及11轮(使用AES 256时总共14轮)。目前还没有针对完整AES 256的实际攻击,但有争议的是,具有不同密钥计划的AES 128现在更安全。@HenkHolterman,请稍候。你是说,如果我删除C:\sampleTextFile.txt,然后打开一个命令提示符,执行类似于
    UnDelete C:\sampleTextFile.txt
    的操作,它将被取消删除?当磁盘大小随着每个“已删除”文件的增加而增加时,这怎么可能呢?@Aeron-Yes。所有的碎片仍然存在,尽管它们可能会随着时间的推移被回收。