Как delphi RSA PKCS # 1 v1.5 - PullRequest
       15

Как delphi RSA PKCS # 1 v1.5

0 голосов
/ 23 апреля 2020

Я провел исследование, но не смог найти понятный источник.

Python код, подобный этому.

from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15


class PycryptodomeAuthSigner(protocol.AuthSigner):

    def __init__(self, rsa_key_path=None):
        super(PycryptodomeAuthSigner, self).__init__()

        if rsa_key_path:
            with open(rsa_key_path + '.pub', 'rb') as rsa_pub_file:
                self.public_key = rsa_pub_file.read()
                print self.public_key;
            with open(rsa_key_path, 'rb') as rsa_priv_file:
                self.rsa_key = RSA.import_key(rsa_priv_file.read())

    def Sign(self, data):
        h = SHA256.new(data)
        return pkcs1_15.new(self.rsa_key).sign(h)

    def GetPublicKey(self):
        return self.public_key

Я нашел такой ресурс, но он хочет, чтобы модуль от меня ( 512 байт). Понятия не имею, как рассчитывается модуль.

uses

  System.SysUtils, RSAObj, MiscObj;

var 
  RSA: TRSAEncSign;

begin  
  try   
    RSA := TRSAEncSign.Create;
    RSA.keyLength := kl2048;
    RSA.encType := oaep;
    RSA.outputFormat := base64;
    RSA.modulus :=       'nHOjA+WQ8NgRJ1O2ZvbQE7h3RaxBNGCxwwudVvGcqjE4+bmhO9hE/2iX/uZEhTNDEEVS6OSm3aO/jEpjJ3iu+baZq16Zd3leAgNmvISlREbu25OaMA1sN/an9Hkrda5es9xcnRoCvPfv76'

      + 'WXFSaaag+mIE9vlZG7InR9kOdESNHXvaFkhAOW7lPquVv/jwsCtP/jXSOvRWSXjvSFJvoiP1i1MKd4imFg/TUk8LRQ1onehiyMs1719AH5rOjPr/lasTB0Do8Zc3NwEkj2+W2ylMZYH5KvQ1YkF6bc6sg40nq4hWgyZ3a9MmacPP3u4m9nbyO8WCPpcYY3uXwDn6tl4Q==';
    RSA.PublicExponent := 'AQAB';
    WriteLn('Modulus: ' + RSA.modulus);
    WriteLn('Public Exponent: ' + RSA.PublicExponent);
  except
    on E: Exception do
      WriteLn(E.ClassName, ': ', E.Message);
  end;
  Readln;
end.
...