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

我之前在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加密工具得到的结果:


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页