Pregunta

  

Duplicar posibles:
   de generar ID de hardware único

Am tratando de generar un identificador que será único para un equipo determinado. El ID no se genera aleatoriamente. Se basará cálculo, de tal manera que el ID generado por ordenador A será fijo y única para el sistema A. Cada vez que el programa se ejecuta en el equipo A, continuará para generar el mismo ID y cuando se ejecuta en otro equipo, que va a generar otro identificador único a ese equipo. Esto es para asegurar que los dos equipos no tienen el mismo ID.

Mi Reto:. Para mi programa sea capaz de generar un identificador único a un ordenador, que necesita para realizar el cálculo sobre la base de una semilla único en el equipo de ejecutarlo

Mi Pregunta:? ¿Cómo puedo obtener un valor único a un ordenador, de modo que pueda utilizar el valor como una semilla en el programa de generación de ID

¿Es posible obtener un valor de hardware de un ordenador (por ejemplo, la placa madre) que es único para ese equipo? De esta manera, el valor es muy probable que no cambie, siempre y cuando la placa base del ordenador no se reemplaza.

¿Fue útil?

Solución

Dirección

MAC? Eso es (para fines prácticos) únicas para cada NIC por lo que la reproducibilidad de garantía incluso si el usuario es dual el arranque. Seguro que hay casos raros de personas que comercian tarjetas, pero junto con otras métricas (no sólo el uso de este, ya que las tarjetas de red pueden ser cambiados), sigue siendo posible.

¿Cómo conseguirlo?

public static byte[] getMACAddress() throws SocketException, UnknownHostException {
    InetAddress address = InetAddress.getLocalHost();
    NetworkInterface networkInterface = NetworkInterface.getByInetAddress(address);

    return networkInterface.getHardwareAddress();
}

Si desea una representación de cadena, hacer esto

for (int byteIndex = 0; byteIndex < macAddress.length; byteIndex++) {
    System.out.format("%02X%s", macAddress[byteIndex], (byteIndex < macAddress.length - 1) ? "-" : "");
}

http://www.kodejava.org/examples/250.html )

Nota: Como se ha mencionado en los comentarios, las direcciones MAC pueden ser falseadas. Sin embargo, su hablando de una pequeña parte de la población hacer esto, y menos que su uso de este material para la lucha contra la piratería, su único suficiente.

Otros consejos

Win32 genera un SID del equipo, que se supone que es única para cada instalación que se puede obtener a través de WMI o Active Directory, pero que es bastante específico de la plataforma. También puede utilizar la dirección MAC, como todos los demás han mencionado, sólo asegúrese de que se trata de un adaptador de red físico, como adaptadores virtuales tienden a compartir la misma dirección MAC en todos los equipos.

Sin embargo, UUID (o GUID) son 128 números de bits que se supone deben ser garantizadas único, y fueron de hecho realizadas con el propósito de resolver el problema de la generación de identificadores únicos a través de múltiples máquinas, al azar. Según Wikipedia:

  

Para poner estas cifras en perspectiva,   riesgo anual de uno de ser golpeado por una   meteorito se estima en uno   oportunidad en 17 mil millones, [25] que los medios   la probabilidad es de aproximadamente 0,00000000006   (6 × 10-11), equivalente a las probabilidades de   la creación de unas pocas decenas de billones de   UUID en un año y tener uno   duplicar. En otras palabras, sólo después de   la generación de 1 mil millones de UUID cada   segundo para los próximos 100 años, la   probabilidad de crear sólo una   duplicado sería de alrededor de 50%. los   probabilidad de un duplicado sería   alrededor del 50% si cada persona en la tierra   es propietaria de 600 millones de UUID.

El número total de posibles combinaciones es 2 ^ 128 (o 3 x 10 ^ 38), por lo que tienden a creer. Además, la mayoría de los generadores UUID modernos no utilizan el algoritmo V1 más (es decir, la que se basa fuera de la dirección MAC), ya que se considera un problema de seguridad debido al hecho de que uno puede decir cuando se generó el GUID, y quién lo generó . En el mundo de Win32, un parche de seguridad circa Win2K o NT 4 cambia para utilizar la versión V4 del algoritmo, que se basa apagado de un número pseudo-aleatorio en lugar de la MAC, y la JVM siempre ha utilizado la versión V3 / V4.

EDIT:. El método utilizado para generar UUID en Java es a través de la clase java.util.UUID

Una manera fácil de hacer esto es leer el hardware de Ethernet o dirección "MAC".

http: // download .oracle.com / JavaSE / 6 / docs / api / java / net / NetworkInterface.html # getHardwareAddress ()

Las direcciones MAC no son tan únicos como la gente piensa, ya que se reutilizan como pasa el tiempo. Pero las probabilidades de una aplicación o la red que tienen dos iguales son bastante bajos.

Dirección

El MAC es única suficiente para lo que. Ver http://en.wikipedia.org/wiki/MAC_address

No se ha especificado el idioma que se está utilizando. Fuere más fácil en algunos idiomas que otros. Aquí es cómo hacerlo en Java http://www.kodejava.org/examples/250. html . Google en torno a su idioma.

Su mejor opción es basar la identificación de la dirección MAC del adaptador de red principal.

Esto es potencialmente probable que el cambio en somepoint, pero también lo es cualquier componente duro único.

FYI GUID se calculan utilizando la dirección MAC.

Tener acceso a la información descrita en este artículo? Sólo para Windows

http://msdn.microsoft.com/en-us/library /aa394587.aspx

Número de serie, la etiqueta de propiedad

Otra opción IFF está utilizando chips de Intel es el número de serie del procesador, suponiendo que usted puede asegurar la función está activada. Ver Intel Serial # Nota para obtener más información

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top