Я нашел исходный код, который сделал правильный расчет, но я не могу использовать его, потому что это платный источник. Я проверил бесплатные альтернативы, но понял, что он не сделал правильный расчет. Возможно, я сделал это неправильно, потому что я не очень хорош.
Я использую его с Chilkat следующим образом.
var
pkey: TPrivateKey;
success: Integer;
pkeyXml: WideString;
Rsa: TChilkatRsa;
strData: WideString;
hexSig: WideString;
begin
pkey := TPrivateKey.Create(Self);
success := pkey.LoadPkcs1File('private.pem');
pkeyXml := pkey.GetXml();
Rsa := TChilkatRsa.Create(Self);
success := Rsa.ImportPrivateKey(pkeyXml);
if (success <> 1) then
begin
Memo1.Lines.Add(Rsa.LastErrorText);
Exit;
end;
Rsa.EncodingMode := 'hex';
Rsa.LittleEndian := 0;
strData := Memo1.Text;
hexSig := Rsa.SignHashENC(strData, 'sha256');
Memo1.Lines.Add(hexSig);
Memo1.Lines.Add('Success!');
end;
результат, который она прислала мне (в шестнадцатеричном формате)
*
86DE113E8ABD62B5E70B0EB62BBBAB993196B2016B37A487E550D87A18CD4E599C2C6388349C46358222C112FD7409FD24895EEBC65118D41C64B88CFFDC4A44E37DBC845E367491796FB14693059631AB734631656FAEE03900607439DEEB38F8958283566A163F54D1D57DD73AF14C958C79A27E2CEE1606D906651E53B101D2CC0F21EA3D5D3BA186FE91E9382D8500A68982D9B35D201A9C31ACFD4559C47E68E1A45FCEF5B5C1432073A23A72E360224548868837A57310DC0548148F939BB3FF0BC9480B564DAA33FF14FE0E1598615F6E7D89744479D5C3AD5CA8E7D7EC4B624360D35CBC0F902F632256DA18A35F57D7B221EC95F636A4EB15CFCEBF 1009 *
private.pem
* * 1014 ----- BEGIN закрытого ключа ----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCvYJ1Ae1GtrFe8 qD1jta6yCZ6FgvWI621uia5ljlTMXYEvcAbOFb95B0EsAs6uFQBMxkWQQ36p + AOV YncEXAvdpj / 0WBrNY2 + MrasHSlEALAUoKI0ATCg565JH / SncgMYtCcljBs30mjol дг + NyIpkc2uZIwPx8DVB71DTKIt6OzTlabDARvfXU1VyR 6hk9uppJ7S3tDHlJ2Sg BDUShh3e7MLF + KzZ4UcYfd1 / 2LkPw / fWpOj6ndSqczTBqC + 0VGwUOWUyRVnMgHLi 7H2fzKSNi + SI9QqaOWyvpzQ2T7W + ezN3MI5kosCyaAkLExOvtaU1BcS57ZTz4lHr ucz4tnSvAgMBAAECggEAHLrHB / kruDezZ8Rnyh3JMIFC5rw9XOC0XJdRanGWkqP + tba0Zq5JX5pAouUS1pG6KtmQK8HizhVEFd8bgCtUBktlzrFgMqVHcNRCYD9cZZrQ fXOnJZVUQajFneVrJiQyUs53nzFOK / PX8qsUgTWI9kuyJLQHwWqITvTVWMIblzo2 L2hGGJaix37chuU / VK2nMcCe / NOToUHGeWKUA4heJbtmHU60IJSm + z8Rutizk497 01qMQOuMlyGNipGlHEtSOnFoZpJyHnYi7M416j8Rmopae0LJ6y + IxigKSZBnt1BL 0tYcu / ge5V2d9OrW6cVXLC3QzF / fgIbAgvkKjbPjgQKBgQDh7ZHx1GhIfrSkDlwN 6tJP3FUsOBKxk + 9gjvgp0EwkhpjeNeYipBYzcTSYOuum3CdbUNqFHmFf7Cin3 / GY gcH0Yj2SL35pgw1KQhaNzsuZtQ4JqR6YCDL4Yjzeb6lHalxwjmuSNl5IMM9i9Dop 8qL7BUqtMjd / HOgcvsMLbKCBgwKBgQDGuIwS1dHS30HjO2 / XqklT + 6iMX + DO / GR4 KgLzE8Rs / a4H1ihAmAQf3VFax4np2YADFXjBDyx91f1fMRA9x7x4UiKr58 / jSykc WXbfl0aT9rplnSMCc6jjMGaCYCXUAqpSqurEDDJHu0n59pcCbWyuWNDpH4pPDull ZZUlWDx0ZQKBgQCNuTCfCcZtC4aXjyZx2Icbb7TCK16WpJ057hWAbVkGZKSKaDc4 LcR7ep0qjXN71YiewMaDUP52ZLdQL6 / 695LKkcHb7Q0YdQwmM / Tf + gRAJJJsvvkh F6uZo k5anqMK2I6qULzsGEzmbi / 5 / Ahsffd9DeG9ac3kYCa + мкВт + уу + 6jrwKBgQCS zPY9W9Obce5cjSX8LgHplrlWqepYgT8 / Pdnb9DhhQ63ygBRQU3yIhZh59Xo + VLyq iowgIrN9aj24uqgC27CxOgv + 7kq24GlIVhbo6fnriJL + Sez4 / LRA0RqJKboIOsfU NgskNNZYA1WM4MuBsZBd46LA9NnZuWxVyYs6gUp3uQKBgEYr7AeIugyrTAWRDylD 7mzKpXIbxPd + a1YcjRKmtSIkAYCHg2h8GVOWFjTn73cV1IttQTLrhQX87m23UdNY fQGe4HbWqOlDwbvNRqkslvOfbf3z0PVAUghf9CbUjxDRO15okmuJfnj5WpC73OWx Kgv1OZWRdmV + AZQwku0GTXvl ----- КОНЕЦ закрытого ключа ----- *
1017 * Рассчитать текст.
2898D62D0596658FA726E4B78597C384192AB57470B859F875B1872649C9E498