Cadena de cifrado en JavaScript y descifrado en Java [cerrado]

2

Me gustaría saber si hay alguna biblioteca para realizar el cifrado en JavaScript y el descifrado en Java. Ya probé muchas API, pero no obtengo los mismos valores en Java.
Quiero cifrado de clave pública-privada y, por lo tanto, tratar de usar RSA.
Algunos de los que he usado son:

  1. www-cs-students.stanford.edu/~tjw/jsbn/
  2. ats.oka.nu/titaniumcore/js/crypto/readme.txt
  3. www.ohdave.com/rsa/

Pocas cosas que verifiqué, JavaScript rompe la cadena en partes pequeñas y luego las cifra, lo que hace que el texto cifrado sea diferente en Java y JavaScript. Edité el código JavaScript para usar la cadena en su totalidad, pero no funcionó.

También intenté establecer el conjunto de caracteres de la página HTML en utf-8, pero tampoco funcionó. Logré encriptar la cadena de un solo carácter como 'K' para ser encriptada y desencriptada correctamente, lo que me hace pensar que hay un problema en la encriptación de la cadena en JavaScript al dividirla en pequeños fragmentos (que verifiqué, pero falla al encriptarla como un entero).

Mi implementación de Java es:

BigInteger d = new BigInteger("1f3fac65c4ae222e3a3074dd4c38fbb72c0705c4bbac0385b867c12c25a44e01", 16);
BigInteger e = new BigInteger("65537");
BigInteger N = new BigInteger("b42e91fbca364cf2a125aec67ffbdab624fd401100c40ea05189ba34d1028b0d", 16);
String messageToEncrypt = "kishor";
byte [] messageByte = messageToEncrypt.getBytes();
BigInteger message = new BigInteger(messageByte);
//Encrypting and Decrypting messages
//Encrypt a message using N and e:
BigInteger ciphertext = message.modPow(e, N);
//Decrypt the message using N and d:
BigInteger plaintext = ciphertext.modPow(d, N);
byte[] plainTextByte = plaintext.toByteArray();
String decryptMessage = new String(plainTextByte);
/*System.out.println("p : " + p);
System.out.println("q : " + q);*/
System.out.println("N : " + N.toString(16)); 
System.out.println("e : " + e.toString(16));
System.out.println("d : " + d.toString(16));
/*System.out.println("PhiN : " + PhiN);*/
System.out.println("ciphertext : " + ciphertext.toString(16));
System.out.println("decryptMessage : " + decryptMessage);
}

Por favor, avíseme si es posible, ya que he buscado muchas preguntas (en Stack Overflow) pero no puedo encontrar una solución. Estoy buscando una biblioteca pre-construida bien probada.

    
pregunta Kishor Sharma 31.07.2012 - 13:29
fuente

1 respuesta

5

¿Se ejecuta el javascript en un navegador? Si es así, no intentes cifrar nada en absoluto.

Consulte mi otra respuesta para más detalles . Básicamente, si estás haciendo algo con javascript, la conexión es a) ya segura o b) no será más segura con cualquier cosa que hagas dentro de la aplicación web.

Tenga en cuenta que hablo de hashing allí, pero en realidad se aplica a cualquier tipo de procedimiento en javascript.

    
respondido por el Zeta Two 31.07.2012 - 14:14
fuente

Lea otras preguntas en las etiquetas