Как я могу расшифровать закрытый ключ с помощью RSA 4096 Nodejs - PullRequest
0 голосов
/ 08 июля 2020

Я пытаюсь расшифровать файл header.rias с помощью закрытого ключа myprivate.pem.

Это мой код:

var {
  privateDecrypt,
  createPrivateKey,
  createDecipheriv,
  createCipheriv,
  randomBytes,
  publicEncrypt,
  KeyObject,
  crypto,
  constants,
} = require("crypto");

var path = require("path");
const { RSA_PKCS1_PADDING } = constants;

var decryptStringWithRsaPrivateKey = function (
  toDecrypt,
  relativeOrAbsolutePathtoPrivateKey
) {
  var absolutePath = path.resolve(relativeOrAbsolutePathtoPrivateKey);
  var privateKey = fs.readFileSync(absolutePath, "utf8");
  var buffer = Buffer.from(toDecrypt, "base64");
  //var decrypted = crypto.privateDecrypt(privateKey, buffer);
  const decrypted = privateDecrypt(
    {
      key: privateKey,
      padding: RSA_PKCS1_PADDING,
    },
    buffer
  );
  return decrypted.toString("utf8");
};

var encryptedFile = fs.readFileSync("header.rias", "utf8");
let b = decryptStringWithRsaPrivateKey(encryptedFile, "myprivate.pem");

Но я получаю следующую ошибку:

internal/crypto/cipher.js:63
    return method(data, format, type, passphrase, buffer, padding, oaepHash,
           ^

Error: error:0407109F:rsa routines:RSA_padding_check_PKCS1_type_2:pkcs decoding error
    at internal/crypto/cipher.js:63:12
    at decryptStringWithRsaPrivateKey (C:\wamp64\www\node-enc\demo.js:388:21)
    at Object.<anonymous> (C:\wamp64\www\node-enc\demo.js:429:9)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47 {
  opensslErrorStack: [
    'error:04065072:rsa routines:rsa_ossl_private_decrypt:padding check failed'
  ],
  library: 'rsa routines',
  function: 'RSA_padding_check_PKCS1_type_2',
  reason: 'pkcs decoding error',
  code: 'ERR_OSSL_RSA_PKCS_DECODING_ERROR'
}

Просто чтобы вы знали, шифрование использовалось с использованием AES 256.

Однако, если я использую RSA_NO_PADDING вместо RSA_PKCS1_PADDING, ошибка исчезнет и будет выведен файл расшифровки будет что-то вроде этого:

�Z�K��]�y��'�>g�|r~�6�)[5�A_J˧��\[�d胮ϐ���~TL7��w���4\��_�����@�Z�J�&W1   �R1�Ob�Wx�K�]�3��J���b�u�_�A�9t��ؘ*v/�s���������9
ս;?jW�6�]O"�+���2wV�'�CV5�"3C�J\�}����}C��;�
                                            \+p�p>��zb���w Y�7O��P+
STm�H�������KS�i{C׾`�b$�
                        ax"�ܹA���
�{e�+%�1��p�f$�zܮ;4��*�x>��f^y4Z��el����&�*��        g(Ex        �'�F�ZZ�Z�·�@��<���눋�>���^���!R����Z�D���N��H|�����p
�LQ5��K��P�.DFU��C �c�//^o�P�[$̛a[.o!�86yܥ�

Я новичок в криптографической области, так что делать дополнения? также, означает ли это, что это результат дешифрования?

...