首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android上的RFC 4122 UUID?

Android上的RFC 4122 UUID?
EN

Stack Overflow用户
提问于 2013-03-20 09:03:04
回答 3查看 1.6K关注 0票数 2

有没有办法在Android上生成RFC4122版本1的UUID?UUID版本1表示基于时间戳的UUID。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-20 09:19:33

你查过this了吗

代码语言:javascript
运行
AI代码解释
复制
public static String deviceUDID(Context ctx) {
 final TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);

 final String tmDevice, tmSerial, androidId;
 tmDevice = "" + tm.getDeviceId();
 tmSerial = "" + tm.getSimSerialNumber();
 androidId = "" +android.provider.Settings.Secure.getString(ctx.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

 UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
 String deviceId = deviceUuid.toString();
 Log.d("Device Id", deviceId);
 return deviceId;
}

您还可以引用thisthis链接。

票数 -1
EN

Stack Overflow用户

发布于 2018-02-17 18:44:11

你试过JUG library吗?

在他们的示例中,他们展示了如何生成基于时间的UUID,如下所示:

代码语言:javascript
运行
AI代码解释
复制
NoArgGenerator timeBasedGenerator = Generators.timeBasedGenerator(); 
UUID firstUUID = timeBasedGenerator.generate();

或者您可以从设备网络接口生成它(如果您的Android版本允许访问硬件信息):

代码语言:javascript
运行
AI代码解释
复制
timeBasedGenerator = Generators.timeBasedGenerator(EthernetAddress.fromInterface());
UUID customUUID = timeBasedGenerator.generate();
票数 2
EN

Stack Overflow用户

发布于 2017-06-29 08:34:08

https://github.com/marccarre/cassandra-utils

这对我很管用。您只需要在build.gradle中使用一个类: cassandra-utils/src/main/java/com/carmatech/cassandra/TimeUUID.java和一个依赖项:

代码语言:javascript
运行
AI代码解释
复制
// https://mvnrepository.com/artifact/com.eaio.uuid/uuid
**compile group: 'com.eaio.uuid', name: 'uuid', version: '3.2'**

警告将使用随机地址代替MAC-address,但您可以更改它。

代码语言:javascript
运行
AI代码解释
复制
import com.eaio.uuid.UUIDGen;

import org.joda.time.DateTime;

import java.util.Date;
import java.util.UUID;

public final class TimeUUID {
private TimeUUID() {
    // Pure utility class, do NOT instantiate.
}

private static final long NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000L;
private static long lastTimestamp = Long.MIN_VALUE;

/**
 * WARNING: Use only for testing purposes, as it may lead to duplicate UUIDs. Re-initialize the value of the last timestamp seen.
 */
public static synchronized void reset() {
    lastTimestamp = Long.MIN_VALUE;
}

/**
 * Generate a new, unique UUID based on current timestamp.
 */
public static UUID createUUID() {
    return createUUID(System.currentTimeMillis());
}

/**
 * Generate a new, unique UUID based on the provided date-time.
 *
 * @param dateTime date-time used for the "time" component of the UUID.
 */
public static UUID createUUID(final DateTime dateTime) {
    return createUUID(dateTime.getMillis());
}

/**
 * Generate a new, unique UUID based on the provided date.
 *
 * @param javaDate date used for the "time" component of the UUID.
 */
public static UUID createUUID(final Date javaDate) {
    return createUUID(javaDate.getTime());
}

/**
 * Generate a new, unique UUID based on the provided timestamp.
 *
 * @param timestamp timestamp used for the "time" component of the UUID.
 */
public static UUID createUUID(final long timestamp) {
    final long timestampIn100Ns = to100Ns(timestamp);
    final long uniqueTimestampIn100Ns = makeUnique(timestampIn100Ns);
    return new UUID(toUUIDTime(uniqueTimestampIn100Ns), UUIDGen.getClockSeqAndNode());
}

private static long to100Ns(final long timestampInMs) {
    return (timestampInMs * 10000) + NUM_100NS_INTERVALS_SINCE_UUID_EPOCH;
}

private static synchronized long makeUnique(final long timestamp) {
    if (timestamp > lastTimestamp) {
        lastTimestamp = timestamp;
        return timestamp;
    } else {
        return ++lastTimestamp;
    }
}

private static long toUUIDTime(final long timestampIn100Ns) {
    // Example:
    // Lowest 16 bits and version 1: 0123 4567 89AB CDEF -> 89AB CDEF 0000 0000 -> 89AB CDEF 0000 1000
    // Middle 32 bits: 0123 4567 89AB CDEF -> 0000 4567 0000 0000 -> 0000 0000 4567 0000 -> 89AB CDEF 4567 1000
    // Highest 16 bits: 0123 4567 89AB CDEF -> 0123 0000 0000 0000 -> 0000 0000 0000 0123 -> 89AB CDEF 4567 1123

    long uuidTime = (timestampIn100Ns << 32) | 0x0000000000001000L;
    uuidTime |= (timestampIn100Ns & 0x0000FFFF00000000L) >>> 16;
    uuidTime |= (timestampIn100Ns & 0xFFFF000000000000L) >>> 48;
    return uuidTime;
}

/**
 * WARNING: returned UUID is not unique. Get the UUID corresponding to the provided date-time and the clock sequence, which depends on the IP and MAC
 * addresses of the current machine, and a random component per process/JVM.
 *
 * @param dateTime date-time used for the "time" component of the UUID.
 */
public static UUID toUUID(final DateTime dateTime) {
    return toUUID(dateTime.getMillis());
}

/**
 * WARNING: returned UUID is not unique. Get the UUID corresponding to the provided date and the clock sequence, which depends on the IP and MAC addresses
 * of the current machine, and a random component per process/JVM.
 *
 * @param javaDate date used for the "time" component of the UUID.
 */
public static UUID toUUID(final Date javaDate) {
    return toUUID(javaDate.getTime());
}

/**
 * WARNING: returned UUID is not unique. Get the UUID corresponding to the provided timestamp and the clock sequence, which depends on the IP and MAC
 * addresses of the current machine, and a random component per process/JVM.
 *
 * @param timestamp timestamp used for the "time" component of the UUID.
 */
public static UUID toUUID(final long timestamp) {
    final long timestampIn100Ns = to100Ns(timestamp);
    return new UUID(toUUIDTime(timestampIn100Ns), UUIDGen.getClockSeqAndNode());
}

/**
 * Extract the "time" component of the provided UUID.
 *
 * @param uuid UUID to extract timestamp from.
 * @return Timestamp in milliseconds.
 */
public static long toMillis(final UUID uuid) {
    return from100Ns(uuid.timestamp());
}

private static long from100Ns(long timestampIn100Ns) {
    return (timestampIn100Ns - NUM_100NS_INTERVALS_SINCE_UUID_EPOCH) / 10000;
}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15519161

复制
相关文章
JS生成UUID
一、UUID是什么   UUID就是Universal Unique IDentifier的缩写,它是一个128位,16字节的值,并确保在时间和空间上唯一。 它是把硬件地址、时间以及随机数结合在一起,它保证对在同一时空中的所有机器都是唯一的。         通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几
庞小明
2018/03/09
15K0
UUID
UUID,是Universally Unique Identifier的缩写,UUID出现的目的,是为了让分布式系统可以不借助中心节点,就可以生成UUID来标识一些唯一的信息;
Dean0731
2021/03/05
3.9K0
Golang 库 - uuid
UUID(Universally Unique IDentifier)是一个128位数字的唯一标识。
twowinter
2020/04/17
14.4K0
javascript 生成 uuid
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) 。 GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。 GUID 的总数达到了2^128(3.4×10^38)个,
SpiritLing
2018/04/16
3K0
Vue使用uuid-npm快速生成uuid,适用于多种场景
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。
德顺
2023/08/25
2K0
Vue使用uuid-npm快速生成uuid,适用于多种场景
Vue使用uuid-npm快速生成uuid,适用于多种场景
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。
德顺
2020/08/19
24.8K0
Vue使用uuid-npm快速生成uuid,适用于多种场景
python uuid库的使用
python 的uuid库是用来生成一串唯一表示的包,uuid是一个 32 位的16进制数,用来设置唯一的辨识信息,具体uuid功能查看维基百科
py3study
2020/01/13
3.7K0
mac上获取手机的uuid
把手机连上mac 终端中输入: system_profiler SPUSBDataType | grep "Serial Number:.*" 修改用 | sed s#".*Serial Number: "##
周希
2019/10/15
1.6K0
Android中关于UUID的操作
UUID 通用唯一识别码(Universally Unique Identifier)是一种软件建构的标准; UUID的目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不是需要通过中央控制端来做辨识信息的指定。如此以阿里,每个人都可以创建与其他人不冲突的UUID。在这种情况下,就不需要考虑数据库创建时的重复问题; UUID是由一组32位数的16进制数字构成,UUID的标准形式包含32个16进制数字,以连字号分为五段。形式为 8-4-4-12的32个字符。 550e8400-e29b-41d4-a7
佛系编码
2018/05/22
2.4K0
Go全局唯一ID选型集合
初始值基于uuid Version4;第二步根据alphabet变量长度(定长57)计算id长度(定长22);第三步依次用DivMod(欧几里得除法和模)返回值与alphabet做映射,合并生成id
黄豆酱
2022/08/12
7000
Go全局唯一ID选型集合
生成 UUID 的三种方式及测速对比!
本篇译自:https://medium.com/@abdelmatyne5/uuid-vs-crypto-randomuuid-vs-nanoid
掘金安东尼
2022/09/19
2.3K0
生成 UUID 的三种方式及测速对比!
android获取uuid_android默认允许获取位置
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169214.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
1.4K0
python中的 uuid 模块使用示例
此模块提供不可变的 UUID 对象 (类 uuid) 和函数uuid1()、uuid3()、uuid4()、uuid5(),
py3study
2020/01/19
9250
Python 如何生成uuid
Python中内置了一个名为uuid包来处理UUID的生成,使用起来非常方便,它提供了生成36位uuid的方法(32位加上4个’-'号作为间隔符,如果不需要间隔符可以手动去掉)。
Steve Wang
2022/04/13
2.7K0
Python 如何生成uuid
[152]python使用UUID库生成唯一ID
Python官方Doc:《20.15. uuid — UUID objects according to RFC 4122》 UUID的算法介绍:《A Universally Unique IDentifier (UUID) URN Namespace》
周小董
2022/04/12
1.1K0
Linux获取uuid_查看uuid的命令
根据定义,UUID(Universally Unique IDentifier,也称GUID)在时间和空间都是唯一的。为保证空间的唯一性,每个UUID使用了一个48位的值来记录,一般是计算机的网卡地址。为保证时间上的唯一性,每个UUID具有一个60位的时间戳(timestamp)。这个时间戳表示自公元1582年(绝对不是1852,这是《COM技术内幕》,1999年3月第1版第89页中的一个错误)10月15号00:00:00:00以来的时间,是以100纳秒为单位的时间间隔。1纳秒(ns)=10-9秒(s)。UUID算法可以保证至大约公元3400年仍然唯一。UUID的C语言结构定义如下:
全栈程序员站长
2022/09/22
6K0
Mysql 8.0 更好的支持了 UUID
背景 UUID 是大家常用的,是一个 128bit 的字符串,例如: 12345678-1234-5678-1234-567812345678 UUID 是有版本的,不同版本有不同的底层结构,RFC4122 定义了5个版本,MySQL 实现的是版本1,由 时间戳、UUID版本、MAC地址构成 好处 MySQL 中使用 UUID 是对 AUTO_INCREMENT PRIMARY KEY的一个很好的替代,有如下好处: keys 在不同 表、库、服务器 中都是唯一的 安全性更好,很难猜 可以离线生成 可以简化数
dys
2018/04/04
5.3K0
速看!今天我才知道,UUID还分五个版本
通用唯一识别码(英语:Universally Unique Identifier,缩写:UUID)是用于计算机体系中以识别信息数目的一个128位标识符,还有相关的术语:全局唯一标识符(GUID)。
麦洛
2021/04/29
2.4K0
速看!今天我才知道,UUID还分五个版本
前端攻城狮都要懂的加密算法之总结,一篇文章教你搞懂加密。
对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。 它要求发送方和接收方在安全通信之前,商定一个密钥。 对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。
江一铭
2022/06/17
1.7K0
前端攻城狮都要懂的加密算法之总结,一篇文章教你搞懂加密。
说说最近遇到的反爬
参数加密指的是在请求中需要加上类似token、uuid 字段,例如在某个请求中query string parameters中有_token和uuid、customerKey等字段,
小歪
2018/07/25
7400
说说最近遇到的反爬

相似问题

如何生成与RFC4122兼容的UUID?

19

为什么UUID#compareTo与RFC 4122不兼容?

32

甲骨文的SYS_GUID() UUID RFC4122兼容吗?

41

基于时间的UUID在实现RFC 4122时不遵循创建顺序

13

libuuid是否与rfc4122兼容

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档