Ich arbeite an einer älteren ColdFusion MX7-Site. Sie möchten ein Passwort-System "Salted Hash" implementieren. Aber irgendwann im nächsten Jahr oder so planen sie, eine komplett neue PHP-Site zu bauen und wollen nicht alle Passwörter zurücksetzen (verlieren).Hash-Funktion, die auf ColdFusion MX7 und PHP 5.x identisch funktioniert?
Also ich bin auf der Suche nach Code, der auf beiden Plattformen funktioniert.
Ich bin neu hier, aber soweit ich das beurteilen kann, sollten die folgenden zwei Blöcke des Codes das gleiche tun. Sie erzeugen jedoch unterschiedliche Ergebnisse. Will jemand helfen?
Coldfusion-Code:
<cffunction name="computeHash" access="public" returntype="String">
<cfargument name="password" type="string" />
<cfargument name="salt" type="string" />
<cfargument name="iterations" type="numeric" required="false" default="1024" />
<cfargument name="algorithm" type="string" required="false" default="SHA-1" />
<cfscript>
var hashed = '';
hashed = hash(password & salt, arguments.algorithm, 'UTF-8');
</cfscript>
<cfloop from="1" to="#iterations#" index="i">
<cfscript>
hashed = hash(hashed & salt, arguments.algorithm, 'UTF-8');
</cfscript>
</cfloop>
</cffunction>
PHP CODE:
function computeHash($password,$salt)
{
$hashed = '';
$hashed = hash('sha1', $password . $salt);
for ($i = 1; $i <= 1024; $i++)
{
$hashed = hash('sha1', $hashed . $salt);
}
echo $hashed;
}
UPDATE 1: Vielen Dank für Ihre Antworten! Mit einem Passwort von "p @ ssw0rd" und ein Salz von "JjXSROiYyKkxNzTklaiErQ ==" erzeugt die folgenden Ergebnisse:
COLDFUSION:
Code, Teil 1:
hashed = hash(password & salt, arguments.algorithm, 'UTF-8');
erzeugt:
A0A8DE3A3B2A8BFD74766EEE126950F4462D3BCB
Code, Teil 2:
hash(hashed & salt, arguments.algorithm, 'UTF-8');
erzeugt:
CFF9B75918B75761B5568854782CD709B2941637
PHP:
Code, Teil 1:
$hashed = hash('sha1', $password . $salt);
erzeugt:
a0a8de3a3b2a8bfd74766eee126950f4462d3bcb
Code, Teil 2:
hash('sha1', $hashed . $salt);
erzeugt:
e955404423747ec706561fa9a319ddac47194a65
Wie Sie das erste Mal, um zu sehen, das Spiel gibt. Aber wenn ich erneut hashe, stimmen sie nicht mehr überein. Ich bin verwirrt.
-Test, ist die falsche. http://www.sha1-online.com/; Vielleicht können Sie das Ergebnis für jede Iteration ausdrucken (Sie brauchen wahrscheinlich keine 1024, 2 genügt). – j13r
wie sind sie anders? Könnten Sie ein Beispiel für Eingaben und Ausgaben veröffentlichen? – ryber
Auch produziert es das gleiche Ergebnis, wenn Sie es nur einmal tun, nehmen Sie den Looping-Teil. – ryber