Actualmente estoy trabajando en un proyecto que implicará transferencias de tarjetas de crédito para admisiones basadas en filas de bases de datos. Al igual que un sistema de llamada voluntaria, el hash SHA-256 del número CC debe coincidir con el hash en la fila DB para que se lo considere el "pickup adecuado".hashes SHA-256 diferentes entre C# y Javascript
Sin embargo, dado que el sistema de taquilla se basa en el navegador, el número de CC en el arranque debe ser hash del lado del cliente, usando Javascript, y luego se compara con los datos de llamada previa descargados.
Sin embargo, cuando tratamos de cifrar los números, el hash siempre termina diferente de lo que fue hashed cuando se creó la fila DB (usando VB.NET y SQL Server 2008 R2). Por ejemplo, si un número CC en la base de datos resulta ser , entonces el hash resultante de .NET se convertiría en xU6sVelMEme0N8aEcCKlNl5cG25kl8Mo5pzTowExenM =.
Sin embargo, al usar cualquier biblioteca de hash SHA-256 de Javascript que pude encontrar, el hash resultante sería siempre NbjuSagE7lHVQzKSZG096bHtQoMLscYAXyuCXX0Wtw0 =.
Supongo que se trata de algún tipo de problema Unicode/UTF-8, pero no importa lo que intento, no puedo hacer que los hashes salgan igual y me está volviendo loco. ¿Puede alguien ofrecer algún consejo?
Aquí hay algo que puede proporcionar alguna información. Vaya a http://www.insidepro.com/hashes.php?lang=eng e inserte "4444333322221111" sin comillas en el cuadro Contraseña. Luego, desplácese hacia abajo a la sección SHA-256.
Puede ver que hay cuatro resultados, dos de ellos son los códigos hash que publiqué (el segundo desde la parte superior es el hash de Javascript y el de abajo es el hash SQL). De acuerdo con esa página, el resultado del hash inferior se genera utilizando una cadena de base 64, además de convertir la contraseña en formato unicode.
He investigado esto y he probado muchas funciones diferentes para codificar la contraseña en formato Unicode, pero no importa qué pequeños ajustes intente u otras funciones que realice, nunca podría lograr que coincida con el código hash que necesito.
Actualmente estoy investigando los parámetros utilizados al llamar a la función SHA-256 en el lado del servidor.
ACTUALIZACIÓN:
Así sólo para asegurarse de que no estaba loca, me encontré con el método de hash que estoy usando los números CC en la ventana inmediata durante la depuración. De nuevo, el resultado sigue siendo el mismo que antes. Puede ver una captura de pantalla aquí: http://i.imgur.com/raEyX.png
¿Podría proporcionarnos alguna información sobre cómo logró el hash en ambos extremos? ¿Qué funciones, su código, etc. ... – JaredPar
posible duplicado de [Java SHA256 emite diferente hash a PHP SHA256?] (Http://stackoverflow.com/questions/4680661/java-sha256-outputs-different-hash-to- php-sha256) –
¿Mostrar un código? Estoy usando este SHA512: http://pajhome.org.uk/crypt/md5/sha512.html y previamente utilicé este SHA-1: http://www.movable-type.co.uk/scripts/sha1. html sin problemas de interoperabilidad de C#. (Pregunta relacionada: ¿por qué no usar sha512?) –