您的位置:首页 > 编程语言 > Delphi

[Delphi] XE2下实现标准的3DES加解密一种方法(可与Java,c#互通)

2018-03-07 17:19 2041 查看
我之前在CSDN下载中放置了一个资源,介绍的是XE2实现与java互通的3DES加解密的一种解决方案。现在回想起来这个资源介绍的非常不清楚,没有交代3des的加密模式。在这里我重新介绍另一种实现3DES标准加解密的方法。
目前经过测试仅实现了3DES中ECB加密模式,填充方式为pkcs5pading的加解密,加密后的内容可用在线3DES加解密来验证,可得到与网页一致的加密结果。
非常遗憾的是没有找到加解密的源码,类似的资源非常少,经过多方的努力找到了 Chilkat Delphi DLL 。
这是一款国外软件, 分为ActiveX和DLL两种模式,带注册码的,不过不用担心,CSDN已经解决了这个问题。DLL的下载地址和注册机在这里,感谢分享:https://download.csdn.net/download/jccddd/9594035

我在官网上找到了使用方法,在这里分享实现的代码,开发环境为 xe2:procedure TForm11.Button1Click(Sender: TObject);
var
crypt: HCkCrypt2;
success: Boolean;
ivHex: PWideChar;
keyHex: PWideChar;
encStr: PWideChar;
decStr: PWideChar;
begin
crypt := CkCrypt2_Create();
success := CkCrypt2_UnlockComponent(crypt,'okj0NzCrypt_XivvwOqDoY3M');
if (success <> True) then
begin
Memo1.Lines.Add(CkCrypt2__lastErrorText(crypt));
Exit;
end;
CkCrypt2_putCryptAlgorithm(crypt,'3des');
CkCrypt2_putCipherMode(crypt,'ecb');
CkCrypt2_putKeyLength(crypt,192);
CkCrypt2_putPaddingScheme(crypt,0);
CkCrypt2_putEncodingMode(crypt,'base64');
keyHex := 'RFpGUGFpc2lubzk5REpUQyEjJUAkXjI0';
CkCrypt2_SetEncodedKey(crypt,keyHex,'base64');

encStr := CkCrypt2__encryptStringENC(crypt,'Memo1');
Memo1.Lines.Add(encStr);

decStr := CkCrypt2__decryptStringENC(crypt,encStr);
Memo1.Lines.Add(decStr);

CkCrypt2_Dispose(crypt);
end;
例文源码下载路径:https://download.csdn.net/download/yueyun889/10274126

测试结果:



在线3DES加密工具得到的结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  3DES XE2 JAVA 标准3DES