产生n位16进制型字符串

文章目录


源码

	 /**
     * 产生一个length为长度字符串,每一位是一个Hex。
     * @param length
     * @return
     */
    public static String getRandomHexString(int length) {
        SecureRandom secureRandom = Holder.numberGenerator;
        int size = length / 2;
        byte[] randomBytes = new byte[size];

        secureRandom.nextBytes(randomBytes);

        //字节数组转16进制并转化为小写
        return DatatypeConverter.printHexBinary(randomBytes).toLowerCase();

    }

    /*
     * The random number generator used by this class to create random
     * based UUIDs. In a holder class to defer initialization until needed.
     */
    private static class Holder {
        static final SecureRandom numberGenerator = new SecureRandom();
    }

测试代码:

	   for(int i=0;i<5;i++){
           System.out.println(getRandomHexString(10));
       }

       System.out.println();
        for(int i=0;i<5;i++){
            System.out.println(getRandomHexString(10));
        }

运行结果:

02aec4facb
2e9e3617e5
7620df4774
0a0ce56657
654d6b4bf2

42d9f18dcc
3c65114944
68f70b2751
d4ba485578
fc8563ab9a

参考文献

Java中Random为什么需要随机因子?
java类uuid源码分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值