delphi - 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;
解决方案
推荐阅读
- apache-spark - 如果未启用 Hive 支持,Spark 表在哪里创建?
- react-select - 2.1.2 版本是否与 React 15.5.4 兼容
- javascript - 如何使从 JSON 添加的链接可点击?
- javascript - 使用构造函数方法的对象内的Javascript对象
- django - Django REST ModelSerializer --- 一般问题
- amazon-web-services - 使用角色而不是密钥在 s3 中获取签名 url,但没有返回任何内容,也没有错误
- excel - 在当前工作表的最后一个活动行之后粘贴来自不同工作表的数据
- css - 未设置选项卡宽度内的语义数据表中的 TH
- java - 从具有自动增量值的两个不同表中插入一个表
- c# - 使用 LINQ 的 EF 动态字段选择