Порт PHP шифрования / дешифрования на Node.js - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь перенести следующий код на Node.js без удачи.

    $output = false;
        $key = hash( 'sha256', self::SECRET_KEY );
        $iv = substr( hash( 'sha256', self::SECRET_IV ), 0, 16 );


        if( $action == 'e' ) {
            $output = base64_encode( openssl_encrypt( $string, self::ENCRYPT_METHOD, $key, 0, $iv ) );
        }
        else if( $action == 'd' ){
            $output = openssl_decrypt( base64_decode( $string ), self::ENCRYPT_METHOD, $key, 0, $iv );
        }

        return $output;

Это то место, где я до сих пор, но оно либо выплевывает бред, либо я получаю одну из нескольких ошибок.

    var crypto = require('crypto'),
      algorithm = ENCRYPT_METHOD,
      password = SECRET_IV;

    function encrypt(text){
      var cipher = crypto.createCipher(algorithm, sha256(SECRET_KEY), sha256(SECRET_IV).substring(0,16))
      let p = Buffer.from(text, 'utf8').toString('base64');
      var crypted = cipher.update(p,'utf8','base64');
      crypted += cipher.final('base64');
      return crypted;
    }

    function sha256(data) {
      return crypto.createHash("sha256").update(data).digest("hex");
    }

    function decrypt(text){
      var decipher = crypto.createDecipher(algorithm, sha256(SECRET_KEY), sha256(SECRET_IV).substring(0,16));
      decipher.setAutoPadding(false);
      var dec = decipher.update(text,'base64','utf-8');
      dec += decipher.final('utf8');
      return dec;
    }

Я пробовал декодирование / кодирование с base64, но это также не работает.Как только я добавил setAutoPaddding в false, я начал делать некоторые успехи.Я обнаружил в одном потоке, что это проблема при кодировании / декодировании с одного языка на узле.

Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...