提交 9dbdbc55 编写于 作者: V vinnie

6863503: SECURITY: MessageDigest.isEqual introduces timing attack vulnerabilities

Reviewed-by: mullan, wetmore
上级 490cd61b
/* /*
* Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved. * Copyright 1996-2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -414,16 +414,17 @@ public abstract class MessageDigest extends MessageDigestSpi { ...@@ -414,16 +414,17 @@ public abstract class MessageDigest extends MessageDigestSpi {
* *
* @return true if the digests are equal, false otherwise. * @return true if the digests are equal, false otherwise.
*/ */
public static boolean isEqual(byte digesta[], byte digestb[]) { public static boolean isEqual(byte[] digesta, byte[] digestb) {
if (digesta.length != digestb.length) if (digesta.length != digestb.length) {
return false; return false;
}
int result = 0;
// time-constant comparison
for (int i = 0; i < digesta.length; i++) { for (int i = 0; i < digesta.length; i++) {
if (digesta[i] != digestb[i]) { result |= digesta[i] ^ digestb[i];
return false;
}
} }
return true; return result == 0;
} }
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册