RFR: 8258588: MD5 MessageDigest in java.util.UUID should be cached

PROgrm_JARvis github.com+7693005+jarviscraft at openjdk.java.net
Fri Dec 18 14:25:24 UTC 2020


On Fri, 18 Dec 2020 13:39:48 GMT, Alan Bateman <alanb at openjdk.org> wrote:

> Can you look in test/micro for existing examples?

Yes, of course, the question is more about the following: should I simply cover `UUID#nameUUIDFromBytes(byte[])` by the benchmark or should I rather write a comparison benchmark which would compare finding the MessageDigest on every iteration against using the holder for this purpose (without any direct reference to `UUID` class).

> It might be that the right place to cache is in `MessageDigest` rather than `UUID` so that other code can benefit too.

`UUID.Md5Digest` may be moved to `MessageDigest` but this seems to be a case to implement something similar to this in the way similar to `StandardCharsets`.

> One other point is that Standard Algorithms specifies that MD5 is supported by MessageDigest so the JDK would be broken it could not be found. If the eventual patch is in UUID then this aspect will need a bit of cleanup.

I've looked through [Standard Algorithms section for MessageDigest](https://docs.oracle.com/en/java/javase/15/docs/specs/security/standard-names.html#messagedigest-algorithms) and is says

> Algorithm names that *can* be specified

And the javadoc of `MessageDigest` says:
> Every implementation of the Java platform is required to support the following standard `MessageDigest` algorithms:
> - `SHA-1`
> - `SHA-256`

So I cannot find any requirement for `MD5` to be present. Although I believe that every implementation does provide it, it may be essential to either specify it or describe the behavior for its absence in case of `UUID`'s usage.

-------------

PR: https://git.openjdk.java.net/jdk/pull/1821


More information about the core-libs-dev mailing list