首页 > 解决方案 > Delphi OpenSSL 加密/解密

问题描述

我想实现Delphi的命令来传递字符串参数并得到一个字符串结果,加密结果应该可以在另一个应用程序中用公钥解密,任何人都可以帮忙吗?

   1) openssl dgst -sha1 -sign PrivateKey.pem -out OutSHA.sha1 Imput.txt
   2) openssl enc -base64 -in  OutSHA.sha1 -out OutB64.b64 -A 




PrivateKey.pem= Private key 
Imput.txt = clear text to encrypt 
OutSHA.sha1 = result from 1 command 
OutB64.b64= final result (text)

使用 Chilkat 组件,但我无法在其他应用程序中解密它

function Tf_invsign.EncSHAB64(s: string): String;
var
  pkey: HCkPrivateKey;
  success:Boolean;
  rsa:HCkRsa;
  b64Sig:PWideChar;
begin
    addlog(s);
    pkey := CkPrivateKey_Create();
    success := CkPrivateKey_LoadEncryptedPemFile(pkey,'private.PEM','');
    if not success then begin
      addlog(CkPrivateKey__lastErrorText(pkey));
      Exit;
    end;
    rsa := CkRsa_Create();
    success := CkRsa_ImportPrivateKeyObj(rsa,pkey);
    if not success then begin
      addlog(CkRsa__lastErrorText(rsa));
      Exit;
    end;
   CkRsa_putLittleEndian(rsa,True);
   CkRsa_putEncodingMode(rsa,'base64');
   {S is String and Var wideChar for that i'm use Addr() will return the first 
    addressing string, mean the string}
   b64Sig := CkRsa__signStringENC(rsa,Addr(s[1]),'sha1'); 
   if not success then begin
     addlog(CkRsa__lastErrorText(rsa));
     Exit;
   end;
   Result:=b64Sig;
   kPrivateKey_Dispose(pkey);
   CkRsa_Dispose(rsa);
end;

标签: delphiopensslbase64sha1

解决方案


推荐阅读