Java中的序列密钥生成和验证(机器唯一标识符)

Posted

技术标签:

【中文标题】Java中的序列密钥生成和验证(机器唯一标识符)【英文标题】:Serial Key Generation and Validation in Java (Machine Unique Identifier) 【发布时间】:2012-03-22 20:06:35 【问题描述】:

我必须通过验证密钥来保护用 Java 编写的应用程序,该密钥应仅在指定的 PC 上工作,因此例如机器 ID 序列号应由应用程序基于唯一标识符生成(例如:硬盘串口、主板串口等……);然后基于这个唯一标识符,另一个程序将生成一个验证密钥。

我已经在 .NET 应用程序上实现了类似的激活系统,生成机器标识符,从 WMI 获取硬件序列号,如何在 Java 中获取这些值?该解决方案应在 Windows、Linux 和 Mac Os X 上独立运行。

如何在 Java 中检索机器的唯一标识符?是否有一些图书馆可以做到这一点?

【问题讨论】:

可能重复:***.com/questions/1986732/… 【参考方案1】:

机器 MAC 地址(或其中一台机器 MAC 地址)是一个很好的候选者。它是唯一的,并且可能比其他硬件标识符更不经常更改。这是一个代码sn-p:

How to get MAC address of a host using java program

【讨论】:

【参考方案2】:

我认为您无法在纯 java 中获得 CPU Id 或硬盘/主板 Id。 你最接近的是network mac address:

NetworkInterface.getNetworkInterfaces().nextElement().getHardwareAddress();

【讨论】:

【参考方案3】:

您需要调用特定于平台的东西。例如,在 Windows 上,您可以调用一个调用 WMI 的 VB 脚本来获取此信息。

注意:如果您知道自己在做什么,那么您使用的任何方法都应该很容易被愚弄。

【讨论】:

以上是关于Java中的序列密钥生成和验证(机器唯一标识符)的主要内容,如果未能解决你的问题,请参考以下文章

如何唯一的标识一台Android设备?

唯一密钥生成逻辑

如何在 Ruby on Rails 4 中为 post 生成唯一的随机 id?

利用Java.util.UUID来生成唯一ID(用来做数据库主键好用)

用于 Firebase 实时数据库/Firebase 身份验证的 Android 唯一密钥

登录的 linux 用户是不是有秘密标识符