易截截图软件、单文件、免安装、纯绿色、仅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字符串函数大全

Delphi字符串函数大全
uses StrUtils;
【字符串函数大全】
      首部 function AnsiResemblesText(const AText, AOther: string): Boolean;
      $[StrUtils.pas
      功能 返回两个字符串是否相似
      ......

括号匹配(delphi)-转

type
TCharStack = class(TStack)
private
function GetTop: Char;
public
function Pop: Char;
function Push(Item: Char): Char;
property Top: Char read GetTop;
end;
const
FindSet = ['(',')'];

implementation
{$R *.dfm}
{ TCharStack }
......

delphi dll 实例 与 dll窗体实例

delphi dll 实例 与 dll窗体实例
本动态链接库方法有
Min,Max,SynAPP,ShowForm,showmyform
dll工程文件
Library Project1;
uses
  dllUnit1 in 'dllUnit1.pas' {Form1};
function Min(X, Y: Integer): Integer; export;
begin
if X < Y then Min := X else Min := Y;
end;
function Max(X, Y: Integer): ......

【转】delphi读写txt文件

http://meidi152.blog.163.com/blog/static/5423302009610103610744/
 
1. memo控件读取txt
memo1.Lines.LoadfromFile('E:\*\*.txt');
2.
Procedure NewTxt(FileName:String);
Var
F : Textfile;
Begin
if fileExists(FileName) then DeleteFile(FileName); {看文件是否存在,在就刪除}
AssignFile(F, ......

Delphi in a Unicode World Part II

Delphi in a Unicode World Part II:  New RTL Features and
Classes to Support Unicode
By: Nick
Hodges
原文链接:http://dn.codegear.com/article/38498
Abstract: This article will cover the new features of the Tiburon
Runtime Library that will help handle Unicode strings.
//
 & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号