Delphi非对称加密

9

我正在寻找一个不依赖于外部DLL的Delphi实现非对称加密算法。是否有可用的选项?

我的目标是使用公钥/私钥对对字符串(或字节数组)进行加密/解密。

6个回答

7

SecureBlackBox 是 Eldos 提供的本地综合解决方案,包括证书管理和访问外部加密设备(如 USB 令牌)。


通过阅读它的文档,似乎不允许使用非对称算法加密字符串,只能使用对称算法。 - Carlos Barbosa
1
请查看ElRSAPublicKeyCrypto类。您可能需要通过流(如果需要,请使用TStringStream类)进行操作,因为您必须将加密数据视为二进制流以避免字符集转换。 - user160694
是的,这似乎满足了我的需求。谢谢! - Carlos Barbosa

5

LockBox现在已经得到改进。它允许使用长的RSA和AES密码,并且正在积极开发中。 它是免费的、开源的,100%本地代码,没有DLL。


3
你可以尝试使用 Lockbox - http://sourceforge.net/projects/tplockbox/。它是免费的,其中包括 RSA 等加密方式(Blowfish、MD5、SHA-1、DES、triple-DES、Rijndael 和数字签名)。

它还附带了一个很好的 RSA 示例,演示了如何生成公钥/私钥以及如何使用这些密钥实际加密和解密数据。

我目前正在使用它与 Delphi 2010 兼容。


在改进之前,LockBox 只实现了短密钥和弱块密码。最近一次发布已经七年了,在密码学上依赖旧的、未更新的代码可能是危险的。 - user160694
以上评论仅适用于Lockbox 2。 Lockbox 3相比Lockbox 2有很大的改进——可以使用任意长度和强加密的非对称密钥。 - Sean B. Durkin

3
我知道原问题中提到了“没有外部DLL”,但如果没有可接受的答案,也许你应该看看OpenSSL DLLs以及这个Delphi链接,其中包含库的导入单元和一些关于如何使用它的好例子,包括RSA加密。
我已经尝试过这个并且成功地使其工作得很好。需要进行一些更改才能使其与unicode Delphi配合使用,但这些更改大多是将PChar更改为PAnsiChar或PBytes。
简单的Delphi包装器现在允许我签名/验证/对称或非对称加密并使用SSL。而且说实话 - OpenSSL DLLs的分发比一些Microsoft的提供更加简单明了。此外,它是免费的,并且得到了良好的维护。

2

查看了FGIntRSA(和FGInt)包,但由于缺乏任何文档,无法弄清楚如何处理公钥/私钥。 - Carlos Barbosa
目前我没有时间和精力去学习Windows Crypto API,我正在寻找一种快速的替代方案。 - Carlos Barbosa
@carlosb - 你想要一个“放下不管”的安全解决方案吗?你确定吗?结果将与根本不使用加密相同 :D - Alex
我同意亚历山大的看法... 我可以问一下它是用来做什么的吗? - Nat
我猜OP的意思是使用Delphi库来实现安全性,而不必与Windows CryptoAPI或从头开始实现算法进行斗争。在安全方面自己动手可能也非常危险。 - user160694
1
Alexander和Nat,目标很简单,需要在服务器上使用私钥加密激活字符串,否则该字符串可能会被篡改,用户将处理该字符串,然后在应用程序中使用公钥解密该激活字符串。只要存在适当的Delphi框架,这应该是一项快速有效的实现,类似于DCPCrypt但支持非对称算法。 - Carlos Barbosa

1

该软件包中没有实现非对称算法。 - Carlos Barbosa
没错,我忘了那个。自从我上次使用它以来已经有一段时间了...但除此之外,它是一个非常好的软件包。 - K.Sandell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接