Как реализовать bcrypt в проекте angular6 - PullRequest
0 голосов
/ 24 ноября 2018

Привет. Я пытаюсь хэшировать ключ, используя пакет bcrypt npm, но он выдает мне ошибки.До сих пор я пробовал этот код.

import * as bcrypt from 'bcrypt';

export class LowLevelEncryption {

    encrypt(key: string){
        console.log(bcrypt);
         bcrypt.hash(key, 19, function(err, hash) {
           Store hash in your password DB.
         });
    }

}

Он выдает много ошибок, таких как: -

Module not found: Error: Can't resolve 'tls' in '/home/ec2-user/environment/passcript/node_modules/tunnel-agent'

может кто-нибудь помочь мне, или кто-то знает любую другую библиотеку.Спасибо

1 Ответ

0 голосов
/ 24 ноября 2018

Вы можете попробовать crypto-js и использовать любую нужную вам стратегию, например:

    import { Injectable } from '@angular/core';
    import * as crypto from 'crypto-js';

    @Injectable()
    export class CryptoService {

    constructor() {
    }


   encrypt(key: any, privateKey: any) {
     const cryptkey = crypto.enc.Utf8.parse(privateKey);
     const encrypted = crypto.AES.encrypt(key, cryptkey, {
      iv: crypto.enc.Hex.parse('00000000000000000000000000000000'),
      mode: crypto.mode.ECB,
      padding: crypto.pad.Pkcs7
   });
   return encrypted.toString();
  }


  decrypt(cryptedKey: any, privateKey: any) {
    const cryptoPrivateKey = crypto.enc.Utf8.parse(privateKey);
    const encryptedKey = crypto.enc.Base64.parse(cryptedKey);
    const decrypted = crypto.AES.decrypt({ciphertext: encryptedKey}, cryptoPrivateKey, {
      iv: crypto.enc.Hex.parse('00000000000000000000000000000000'),
      mode: crypto.mode.ECB,
      padding: crypto.pad.Pkcs7
   });
   return decrypted.toString(crypto.enc.Utf8);
  }
}

Или даже проще: зашифровать

const encryptedPassword = crypto.AES.encrypt(value, 'password');

и расшифровать

const bytes  = crypto.AES.decrypt(encryptedPassword, 'password');
const decryptedPassword = bytes.toString(crypto.enc.Utf8);

Надеюсь, это поможет

...