Cadena de cifrado en javascript y descifrado en java

Quisiera saber si alguien conoce alguna librería para encriptar en javascript y desencriptar en java. Ya probé muchas API, pero no obtuve los mismos valores en Java.
Quiero encriptación de clave pública-privada y, por lo tanto, trato de usar RSA. Los pocos que he usado son:

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

Pocas cosas que verifiqué, javascript divide la cadena en pequeños fragmentos y luego los cifra, lo que hace que el texto cifrado sea diferente en java y javascript. Edité el código javascript para usar la cadena como un todo, pero no funcionó.

También traté de configurar el conjunto de caracteres de la página html en utf-8, pero tampoco funcionó. Tuve éxito al cifrar una cadena de un solo carácter como 'K' para cifrarla y descifrarla correctamente, lo que me hace pensar que hay un problema al cifrar una cadena en javascript al dividirla en pequeños fragmentos (que verifiqué, pero falla al cifrarla como un todo).

mi implementación 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 stackoverflow) pero no he podido encontrar una solución.

preguntado el 31 de julio de 12 a las 10:07

Entonces, ¿quieres cifrar en el lado JS y descifrar en el lado de Java? ¿Cómo estás pasando los datos cifrados de uno a otro? -

se pasará el texto cifrado y el descifrado se hará mediante una clave privada. -

¿Cómo estás transfiriendo los datos entre javascript y java? ¿Podría mostrar el lado de Javascript también? -

es simplemente un envío de formulario. cifraré la cadena ingresada por el usuario y luego la enviaré. Pero mi problema es que el cifrado javascript y java son diferentes para la misma clave, el mismo valor de cadena. Primero estoy comprobando si el cifrado en ambos lados es el mismo. El uso de esas bibliotecas en javascript es simple y directo. En este momento, solo estoy mostrando valores en html y comprobando mi clase Java. -

No implemente la criptografía usted mismo. Utilice bibliotecas bien probadas. -

3 Respuestas

Prueba Gibberish AES (JS Lib) https://github.com/mdp/gibberish-aes/

Respondido 15 ago 12, 04:08

RSA es un mecanismo de transporte clave. Lo usa para cifrar claves para algoritmos simétricos. Por lo que he visto, las personas que lo usan para cualquier otra cosa no saben lo que están haciendo y, si persisten, terminan construyendo un sistema criptográfico sin valor.

He interoperado con éxito entre Java y el Biblioteca criptográfica de Javascript de Stanford. Hay muchas otras buenas bibliotecas de JavaScript para algoritmos de cifrado simétrico.

Respondido 30 Oct 19, 13:10

Hola chicos, descubrí la solución. En javascript, se omitió el primer carácter para que no se cifrara, lo que causó el problema. arregló el bucle. Gracias por todas sus respuestas.

Respondido 16 ago 12, 05:08

¿Puedes publicar un ejemplo en js y java, por favor? - Houcem Berrayana

Actualmente no los tengo... pero puedes usar cualquiera de 1)www-cs-students.stanford.edu/~tjw/jsbn 2) ats.oka.nu/titaniumcore/js/crypto/readme.txt 3) ohdave.com/rsa. Contienen js ejemplo. - kishor sharma

Gracias. Me las arreglé para hacerlo funcionar... Debería hacer decode64 dos veces - Houcem Berrayana

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.