Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

339
Vistas
¿Cómo hacer cifrado básico en caracteres (TypeScript)?

Quiero cifrar una cadena con claves públicas y privadas RSA. Sin embargo, cuando intento descifrar los caracteres hasta su valor ascii inicial, devuelven algo diferente. Aquí están mis métodos para cifrar y descifrar:

 /** * Method to encrypt a string using associated public-key * @param plainText string to cipher * @returns string of encrypted plainText */ public encryptData(plainText: string): string { let cipher = ""; for (let i = 0; i < plainText.length; i++) { console.log(plainText.charCodeAt(i)); let temp: number = Math.pow(plainText.charCodeAt(i), this.e) % this.n; console.log(String.fromCharCode(temp).charCodeAt(i)); cipher += String.fromCharCode(temp); } return cipher; } /** * Method to decrypt a string using associated private-key * @param cipherText string to decrypt * @returns string of encrypted plainText */ public decryptData(cipherText: string): string { let text = ""; for (let i = 0; i < cipherText.length; i++) { console.log(cipherText.charCodeAt(i)); let temp: number = Math.pow(cipherText.charCodeAt(i), this.d) % this.n; text += String.fromCharCode(temp); } return text; }

n d e 15, 7 y 13 respectivamente. ¡Cualquier consejo sobre esto sería muy apreciado!

EDITAR

Encontró una solución al problema, use el siguiente método al crear la variable temp .

 private modular_pow(base: number, expo: number, modulo: number) { base = base % modulo; var result = 1; var x = base; while(expo > 0){ var leastSignificantBit = expo % 2; expo = Math.floor(expo / 2); if (leastSignificantBit == 1) { result = result * x; result = result % modulo; } x = x * x; x = x % modulo; } return result; }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El tamaño del módulo N decide la carga útil máxima para el libro de texto RSA. Como es el valor 15, el valor del mensaje debe ser 14 o inferior.

Los caracteres suelen estar al menos en el rango 0..25 y ese no es el valor del carácter sino el índice en el alfabeto. Entonces, o divide los caracteres aún más o necesita usar un módulo más grande (como p = 7, q = 19 y el muy importante n = 133 que podría manejar cualquier carácter ASCII (por supuesto, vagando fuera de imprimible ASCII para algunos valores).

Tenga en cuenta que si tiene componentes más grandes de su RSA, se vuelve imperativo realizar una exponenciación modular utilizando un algoritmo especializado , en lugar de realizar primero una exponenciación seguida de un cálculo de módulo, lo cual es muy ineficiente y probablemente causará un desbordamiento de enteros (o algo similar) durante el paso de exponenciación.

Tenga en cuenta también que la salida de su libro de texto RSA debe colocarse en un carácter (imprimible) en su esquema. Para practicar, también puede usar solo los números separados por espacios, ignorando el crecimiento del texto cifrado.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda