程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Java随机UUID是否可预测?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Java随机UUID是否可预测??

开发过程中遇到Java随机UUID是否可预测?的问题如何解决?下面主要结合日常开发的经验,给出你关于Java随机UUID是否可预测?的解决方法建议,希望对你解决Java随机UUID是否可预测?有所启发或帮助; @H_618_2@好吧,如果您想知道UUID的随机性,则必须查看源。

@H_618_2@以下代码部分摘自OpenJDK7(与OpenJDK6相同):

public static UUID randomUUID() {
        SecureRandom ng = numberGenerator;
        if (ng == null) {
            numberGenerator = ng = new SecureRandom();
        }

        byte[] randomBytes = new byte[16];
        ng.nextBytes(randomBytes);
        randomBytes[6]  &= 0x0f;  /* clear version        */
        randomBytes[6]  |= 0x40;  /* set to version 4     */
        randomBytes[8]  &= 0x3f;  /* clear variant        */
        randomBytes[8]  |= 0x80;  /* set to IETF variant  */
        return new UUID(randomBytes);
    }
@H_618_2@如您所见,16个字节中只有2个不是完全随机的。在第六个字节中,您丢失8位中的4位,在字节8中,您失去2位随机性。

@H_618_2@因此,您将获得具有122位随机性的128位值。

@H_618_2@操作可能引起的唯一问题是,很有可能将您的数据识别为UUID。因此,如果您想将其隐藏在其他随机数据中,将无法使用…

解决方法

@H_618_2@我想对数据库中的敏感数据使用加密安全的主密钥-这是无法猜测/可预测的,并且不能由数据库生成(在持久存储对象之前,我需要密钥)。

@H_618_2@我了解Java使用带有加密安全随机数生成器的4型UUID,但是我知道UUID并不是完全随机的,所以我的问题是,假设无法从一组现有的uuid中预测uuid,这有多安全?

大佬总结

以上是大佬教程为你收集整理的Java随机UUID是否可预测?全部内容,希望文章能够帮你解决Java随机UUID是否可预测?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: