Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

346
Visualizações
Conversión de Ruby OpenSSL a node.js Crypt

He estado luchando con esto durante un par de días y me preguntaba si alguien tendría la experiencia para conocer estas dos bibliotecas de cifrado lo suficientemente bien como para ayudar.

Actualmente estoy creando una carga útil de SSO de acuerdo con las instrucciones que me dio un proveedor. Los pasos para crear esto se destacan de la siguiente manera:

Cree un cifrado AES 256 CBC de la carga útil
i. La clave será un resumen SHA256 del token del sitio.

2. Base64 codifica el vector de inicialización (IV) y la carga útil cifrada desde arriba

3. Escape CGI de la salida del paso 2.

4. Su carga útil final sería algo así como
ikUbqiutwMhi%2Bjg6WwUHyeZB76g6LdLGcrKrEV4YpvQ%3D%0A.

SHA256 siempre generará un hash de 32 bytes, pero no se puede mostrar bien en Base64. Cuando se muestra como hexadecimal, son 32 pares de valores hexadecimales (un total de 64 caracteres en la pantalla) pero representan solo 32 bytes.

Pude hacerlo funcionar en Ruby con Open SSL, el código es:

 require 'digest' require 'openssl' require "base64" require 'cgi' require 'json' cipher = OpenSSL::Cipher.new('aes-256-cbc') cipher.encrypt cipher.key = Digest::SHA256.digest(siteToken) iv = cipher.random_iv data= unencryptedPayload encrypted = cipher.update(JSON.generate(data)) + cipher.final encoded = CGI::escape(Base64.encode64(iv + encrypted)) puts encoded

Sin embargo, todavía no he tenido suerte con la biblioteca Crypto de Node.js. Esto es lo que tengo hasta ahora:

 const crypto = require('crypto'); // Defining algorithm const algorithm = 'aes-256-cbc'; // Defining key //'key' variable is defined and equal to siteToken in the OpenSSL version //const key = siteToken; // Defining iv const iv = crypto.randomBytes(16); // An encrypt function function encrypt(text) { // Creating Cipheriv with its parameter let cipher = crypto.createCipheriv( 'aes-256-cbc', Buffer.from(key), iv); // Updating text let encrypted = cipher.update(text); // Using concatenation encrypted = Buffer.concat([encrypted, cipher.final()]); // Returning iv and encrypted data return { iv: iv.toString('hex'), encryptedData: encrypted.toString('hex') }; } // Displays output var output = encrypt(unencryptedPayload);

Creo que mi código hasta ahora ha cubierto casi todos estos, excepto el resumen SHA256 del token del sitio. ¿Alguien sabe cómo podría lograr esto en términos de Node.js?

¡Gracias!

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda