Jon*_*Jon 5 c# delphi security encryption
我正在ASP.Net中编写一个Web应用程序,为使用Delphi编写的Windows应用程序创建许可证密钥.为简单起见,我将使用电子邮件地址和日期.
我想在C#中加密它并将该信息通过电子邮件发送给该人,然后当Windows应用程序启动时,此人输入加密字符串.
每次Windows应用程序启动时,它都会通过解密并与今天的日期进行比较来检查该许可证.
我怎样才能确保C#加密在Delphi中成功解决?
虽然简单的答案是'使用相同的算法,并确保你有相同的密钥和初始向量',这个答案只暴露你将要遇到的真正问题:你如何保护加密密钥?将其与许可证一起邮寄?将它嵌入应用程序?事实是,没有协议可以通过信任的根源来引导自己,无论是公共信任机构还是共享机密.共享密钥很容易编码,但在实践中完全没用(这意味着AES,3DES,XDES或任何其他类似的密码不是答案),因此您需要一种基于公钥加密的方案.为此,要为许可证的受益人加密某些内容,您需要所述受益人的公钥,这将使配置变得困难(许可证站点发送公钥,您加密许可证,发送电子邮件等).最好以明文形式发送许可证,但使用您的私钥签名.然后,您的应用程序可以验证许可证上的签名并使用它,如果没有被篡改.
S-MIME就是这样一种方案.PGP也一样好.在C#和Delphi中编写自己的代码是可能的,但强烈建议不要这样做.请参阅加密签名.