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

Для заголовка я могу использовать модуль crypto для шифрования контента с помощью ключа publi c, например, crypto.publicEncrypt() в nodejs.

ref this https://nodejs.org/api/crypto.html#crypto_crypto_publicencrypt_key_buffer .

Как я могу сделать такое в денеме? Попытайтесь найти аналогичный модуль для NEM, но безуспешно.

Любая помощь или предложение приветствуются.

Ответы [ 3 ]

1 голос
/ 08 августа 2020

Недавно я реализовал RSA на чистом TypeScript. Вы можете использовать god_crypto (я знаю, что у меня странный вкус называть библиотеку).

import { RSA } from "https://deno.land/x/god_crypto/mod.ts";

const publicKey = RSA.parseKey(`-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsL3rvxnzQ3G8JjYqhUli
zCYdpwBcQR5ahk1qZAfikOHwvejLh1OeqelKuvd1Vw36R8xQmuuWPu/u2V/CRRQW
uO18dVGkmKe/SI9gwXzjRCJiFwM7F4wki7Rt7KKqydX70nzN33tARkE3obIBLPdy
OGqJjaJicDo9hFQsJ/SksizPD/BTlKa4AGyNWMcvmW7fMbeTiwDbEx3Z3sR0Opqn
5no7QJ+6UkhV32q5jgQ7Eg2AgMBnh5cN22bxu/YxNGzsRzh29yqeSPaRBRUB/K0t
TzmCXg9aKg/Xy7hyNpKdd8gi+wawBj6nxvBfCPwGN7gP4rsedM8TMX+ibsn/rID8
BQIDAQAB
-----END PUBLIC KEY-----
`);

const rsa = new RSA(publicKey)
console.log(await rsa.encrypt("Hello World"));

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я являюсь автором библиотеки.

1 голос
/ 20 июля 2020

Не думаю, что в настоящее время существует библиотека, подобная той, что в den. Однако вы можете перенести криптографическую библиотеку в машинописный текст и использовать ее в значении https://github.com/nodejs/node/blob/master/lib/crypto.js

0 голосов
/ 23 августа 2020

Я предлагаю обходной путь, указанный ниже. Я не уверен насчет воздействия на безопасность, но это помогает до тех пор, пока кто-нибудь не предоставит поддержку криптографии здесь: https://github.com/denoland/deno/tree/master/std/node/#commonjs -module-loading или build означает собственный крипто-модуль (поддерживает не только scrypt).

метод обозначения

import { exec, IExecResponse, OutputMode } from "https://deno.land/x/exec/mod.ts";

const passwordHasher = async (password: string, salt: string) => {
  const output: IExecResponse = await exec(
    `node ./node_scripts/pbkdf2.js --string ${password} --salt ${salt}`,
    {output: OutputMode.Capture}
  );
  return output.output;
}

export default passwordHasher;

pbkdf2. js скрипт узла

const crypto = require('crypto');
const argv = require('minimist')(process.argv.slice(2));

console.log(
  crypto.pbkdf2Sync(argv.string, argv.salt, 100000, 64, 'sha512').toString('hex')
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...