java如何对一个字符串生成唯一的编码

Python09

java如何对一个字符串生成唯一的编码,第1张

JAVA类库中可以使用UUID方法,来生成唯一的数字的一串数字编号,也就是订单号。

UUID.randomUUID().toString().replaceAll("-", "")通过上述方法就可以返回一串数字字符串

//先看不加参数的源码

public static UUID randomUUID() {

        SecureRandom ng = Holder.numberGenerator

        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)//看到这里没,其实也是调用的带参数的,只不过

        //所带参数的是给你随机出来的

    }

    

    //再看带参数的

     public static UUID nameUUIDFromBytes(byte[] name) {

        MessageDigest md

        try {

            md = MessageDigest.getInstance("MD5")

        } catch (NoSuchAlgorithmException nsae) {

            throw new InternalError("MD5 not supported")

        }

        byte[] md5Bytes = md.digest(name)//这里就是对给的byte[]参数进行md5运算之后再进行计算UUID

        md5Bytes[6]  &= 0x0f  /* clear version        */

        md5Bytes[6]  |= 0x30  /* set to version 3     */

        md5Bytes[8]  &= 0x3f  /* clear variant        */

        md5Bytes[8]  |= 0x80  /* set to IETF variant  */

        return new UUID(md5Bytes)

    }