Skip to content

Commit 648482a

Browse files
richterdennisdcodeIO
authored andcommitted
Improve safeStringCompare using xor (#77)
1 parent 127318c commit 648482a

File tree

1 file changed

+4
-11
lines changed

1 file changed

+4
-11
lines changed

src/bcrypt.js

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -198,18 +198,11 @@ bcrypt.hash = function(s, salt, callback, progressCallback) {
198198
* @inner
199199
*/
200200
function safeStringCompare(known, unknown) {
201-
var right = 0,
202-
wrong = 0;
203-
for (var i=0, k=known.length; i<k; ++i) {
204-
if (known.charCodeAt(i) === unknown.charCodeAt(i))
205-
++right;
206-
else
207-
++wrong;
201+
var diff = known.length ^ unknown.length;
202+
for (var i=0, i<known.length; ++i) {
203+
diff |= known.charCodeAt(i) ^ unknown.charCodeAt(i);
208204
}
209-
// Prevent removal of unused variables (never true, actually)
210-
if (right < 0)
211-
return false;
212-
return wrong === 0;
205+
return diff === 0;
213206
}
214207

215208
/**

0 commit comments

Comments
 (0)