我的应用程序通过Internet发送加密文件,我需要能够执行以下操作:
-
( Client side Delphi 2010) :使用 public key shipped with my application 加密文件并将其上传到服务器
-
( Server side PHP) :使用我的 private key stored on server 解密上传的文件
-
(处理上传的文件......)
听起来很简单,但我找不到任何可靠的代码/组件,我找到了这些组件:
-
DCPcrypt . 这就是我似乎支持基于密钥对的加密(RSA?)
-
GnuPgp(GPL)所以我不能在我的商业应用程序上使用它 .
-
TurboPower LockBox 3:确实支持密钥对加密,但非常神秘(没有文档AFAIK),似乎不支持文件加密 .
My question is: 有一个 secure / reliable 加密组件:
-
实现我上面描述的内容(即密钥对加密)
-
可以使用PHP解密
-
适用于 large files/streams
-
( Dreaming here! )有一个简单的delphi / php演示,展示了如何做到这一点? :)
-
只有FOSS解决方案,我已经超出预算了:)
2 回答
我会选择OpenSSL .
PHP似乎有很多支持,虽然我还没有尝试过它:例如the manual和an example here .
使用OpenSSL可以很好地使用Delphi,使用我在这里多次提到的东西:http://www.disi.unige.it/person/FerranteM/delphiopenssl/ . 该页面上也有一些很好的例子 . 并看看Indy OpenSSL的进口情况 .
不是特定的组件,但绝对免费,灵活,并有足够的可能性拍摄自己,安全方面,在脚下:-)
编辑:
对于Delphi,我会考虑使用EVP_Seal *函数,你可以在this SO answer找到我的版本的减少libeay32.pas文件 . 你知道这是因为Indy没有表现或实现太多/任何实际的EVP_函数,所以你需要导入函数声明和一些其他例程 .
对于PHP this link似乎是正确的对应物 .
作为奖励,这应该让您了解如何使用EVP_Seal *的东西(未经测试):
啊,加密 . 有一种说法是,一个程序员知道一点点加密比一个不知道的人更危险 .
在一个非常相似的情况下,我花了很多时间试图找到一种使用开源来进行数字XML签名的方法 . 我只是managed to get so far才能屈服并获得rock solid third party library . 它在纯粹的货币意义上并不便宜,但到目前为止我最好的投资之一 .
(真实的故事:我实际上与这个图书馆的作者进行了一场小小的抨击,甚至从评论中删除了 . 唉,我最后还是从他那里买了 . 去看看 . )