易截截图软件、单文件、免安装、纯绿色、仅160KB

在Delphi中解密Magento加密的信用卡号

问题背景:
       公司希望使用Magento来进行接单,而后把订单导入到一个ERP系统中(订单处理引擎)。
问题:
       在使用WebService从Magento中获取Payment信息时,信用卡是被加密的(法律规定不允许在数据库中存储信用卡的明文信息)!
      仔细研究了一下Magento的加密方式(/magento/app/code/core/Mage/Core/Model/Encryption.php)发现Magento对于敏感信息的处理是先加密、再用base64进行编码。
(其实这个问题可以变通一下,用PHP写一个解密文件,以加密后的信用卡号做为参数,返回值为信用卡的明文。Delphi中可以用Msxml2.XMLHTTP直接发送参数,但总觉得别扭。不过这是一个保底方案)
BlowFish是PHP自身提供的算法模块(用mcrypt_list_algorithms()查看其所支持的的算法模块的命令)。
public function encrypt($data)
{
return base64_encode($this->_getCrypt()->encrypt((string)$data));
}
知道这些后,进而跟踪其使用的加密方式是BlowFish。那下面的工作就简单了。
需要分二步骤来完成解密工作:
一.找到Delphi版的BlowFish(之所以找Delphi版源码而不是直接找DLL,是怕有些细节点PHP的算法会与Delphi的算法有差异,修改方便,结果被猜中了。
     1.1 在PHP中,如果明文是16位的,加密后的密文也会是16位的。在Delphi中,如果明文是16位的,加密后密文将会变为24位。
     1.2 在PHP中,如果明文不够16位,会以chr(0)来填充,以便以8位为一个Block进行加密。则在Delphi中,如果明文不够16位,会以一个数字 来填充。
二.对信用卡信息进行Base64解码与BlowFish解密工作。
下面就是对信用卡信息的解密:
uses
BlowFish,EncdDecd ;//BlowFish的源码下载见页底
var
DecryptCCNum:TBlowfish;
outstring:string;
begin
DecryptCCNum:=TBlowfish.Create(nil);
try
with DecryptCCNum do
begin
DecryptCCNum.CipherMode:=ECB ;
DecryptCCNum.StringMode:=smNormal;
DecryptCCNum.InitialiseString('4dc73a5cfb22ab514751cded9ef2db4b'); //这个是Magento安装时提供的密钥,如果忘了可以在安装程序下面在路径app/etc/下的local.xml文件
DecryptCCNum.DecString(DecodeString('加密后的信用卡号') ,outstring);
end;
fina


相关文档:

delphi开发ocx控件开发笔记(一)

      由于项目的需要,近期开始学习用delphi开发一个软电话控件。
      以前接触过一些delphi开发方面的东西(当然都是些皮毛啦),但没接触过ocx控件的开发,在此把一些简单的东西记下来,一方面以后自己可以再学习,另一方面希望对刚刚学习delphi开发ocx控件的初学 ......

delphi 生成xml 方法 与 delphi txt文件操作

Procedure TForm1.Button1Click(Sender: TObject);
Var
xmlstr,FileName: String;
f: Textfile;
Begin
xmlStr := '<?xml version="1.0" encoding="gb2312"?>';
xmlstr := xmlstr + '<user><name>张三</name><sex>男</sex></user>';
sh ......

delphi 编写的com 对象 用delphi 的调用实例

delphi 编写的com 对象 用delphi 的调用实例
COM 对象与 前一篇文章的 PHP调用的COM为同一个对象,故不例出COM.
procedure TForm1.Button4Click(Sender: TObject);
var
  myCounter, mReturn: variant;
begin
  myCounter := CreateOleObject('abc.myxml');
  mReturn := myCounter.xml;
 &nbs ......

Delphi in a Unicode World Part I

 ---
Delphi in a Unicode World Part I: What is Unicode, Why do you need
it, and How do you work with it in Delphi?
By: Nick
Hodges
原文链接:http://dn.codegear.com/article/38437
Abstract: This article discusses Unicode, how Delphi developers
can benefit from using Unicode, and ho ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号