在Delphi中加密/解密文本文件?

时间:2010-05-06 10:01:50

标签: delphi encryption cryptography

您好我想知道文本文件加密和ecryption的最佳加密技术。

我的情景:

我的软件有两种类型的用户Administartor和Operators。我们的要求是当管理员使用GUI输入数据并保存时加密文本文件。将为操作员输入该加密文件,他们只需选择它并使用该文件即可。当操作员选择这些文件时,此处文件应自动解密数据以供进一步计算。

请帮助我使用哪种加密/解密技术?

3 个答案:

答案 0 :(得分:19)

进行加密时的一个黄金法则是要了解密码学作为一个整体非常困难。

有许多不同的方法/算法可供选择,并且没有一种算法/方法可以说是最好的。这一切都取决于您的需求和影响应用程序分发等的可能性。

可能存在问题的一个例子是,在您的方案中,解密“密钥”需要与应用程序一起分发,并可能使其不安全。这通常被称为“密钥分配”问题。

开始阅读有关加密的好地方是http://en.wikipedia.org/wiki/Cryptography

对于Delphi的现成产品,有一些很好的软件包可用:

Torry的网页上还有很多组件:

我强烈建议您使用一些现有的实现而不是开始自己的实现,因为创建一个安全的工作加密算法非常困难。

答案 1 :(得分:3)

将加密消息从地点/应用移动到另一个时,您必须考虑的问题之一是存储加密/解密密钥的位置。

正如我所说的那样,它似乎是在您的应用程序中构建的。如果是这样,请记住使用各种技巧来隐藏它:密码字符串应该分成几个位,并且只附加在受保护的memoryspace中,必须标记为不可分页(否则密码可以在页面文件中看到)。登记/> 对于未加密的内容(文本文件)的相同规则。它永远不会被保存(甚至临时)未加密到磁盘。如果保存,则在删除之前用垃圾覆盖日期,然后删除它。

另一个approch(特别是如果你已经使用压缩组件),是(文本)文件,可以使用密码压缩。

答案 2 :(得分:3)

说实话,没有“最好”的技术。它主要取决于您尝试保护的数据的敏感性以及可能访问此数据的人数。对我来说可能“最好”的可能是对你的项目来说纯粹的过度杀伤力。 在您的情况下,您可以使用任何双密钥加密方法。或asymmetric key。基本上,管理员有一个密钥,操作员有另一个密钥。然后管理员可以加密文件,但除非他有操作员密钥,否则他将无法再次解密文件。操作员可以解密文件,并且需要加密只有管理员才能访问的文件。 (非对称密钥以两种方式加密。)

有几种解决方案可以利用这些非对称密钥。最好的是您可以以最简单的方式添加到项目中的那个,同时仍然为您的需求提供足够的保护。

如果您是真正的数学向导,也可以构建自己的非对称密钥算法。计算很复杂,并且在大多数解决方案中涉及极高的素数。正如K. Sandell所说,找到一个符合您需求的优秀现有解决方案。

相关问题