2010-07-29 10 views
0

OpenSSL accepter seulement la moitié d'un mot de passe SHA256 haché
$encryptedkey = openssl_encrypt ($data, 'AES256', "$sha256", $raw_output = false);
hachage ressemble à ceci: a0461cea77b9942addee32b2265b32ebcf150426e2490810938ab47206fd320b
son acceptation seulement 32 caractères de celui-ci: a0461cea77b9942addee32b2265b32eb
Comment puis-je résoudre ce problème? Je vous remercie!

edit: exemple: lorsque déchiffrer les données si le hachage ne mach après 32 caractères, il sera toujours le déchiffrer même si son mal

a0461cea77b9942addee32b2265b32ebcf150426e2490810938ab47206fd320b
a0461cea77b9942addee32b2265b32ebcf150426e24808019485b43406df3a9b

les deux fonctionneront quand ils ne devraient pas?php openssl crypter des données avec aes256 et utiliser un sha256 hashed aide pass!

Répondre

0

Je suppose que vous devriez transmettre les données brutes, pas une représentation hexadécimale. Je dis cela parce que 32 * 8 = 256, donc en lisant 32 caractères, la fonction est en train de lire 256 bits. Essayez le passage pack("H*", $sha256) au lieu de $sha256.

+0

Est-ce un moyen sûr de le convertir?
c'est ce qu'il a fait à la table de hachage: "," E + 3 6B ™ Ó¤R-Kai% ¡¡ªÊnª – cryptscript

+0

@user Bien sûr, c'est juste la représentation brute.Vous pouvez voir que par exemple 'pack (" H * ", hash (" sha256 "," mydata ")) == hash (" sha256 "," mydata ", true)'. – Artefacto

+0

Ok, je pense que je l'obtiens $ hash3 = hash ('SHA256', $ data2); $ HAsH4 = paquet ("H *", hash3 de $); $ hash5 = bin2hex (HAsH4 $); écho hash5 $ - le même echo hash3 $ - le même écho HAsH4 $ - " , • É + 3 6B ™ Ó¤R-Kai% ¡þÊnª – cryptscript