سؤال

ممكن مكررة:
يمكن توليد فريدة من نوعها الأجهزة ID

أحاول أن تولد الهوية التي سوف تكون فريدة من نوعها على كمبيوتر معين.معرف لن يكون بشكل عشوائي.سيكون الحساب على أساس هذه الهوية الناتجة عن الكمبيوتر سوف تكون ثابتة و فريدة من نوعها الكمبيوتر A.في كل مرة يتم تنفيذ البرنامج على الكمبيوتر, فإنه سيتم الاستمرار في توليد نفس معرف عندما أعدم على كمبيوتر آخر ، فإنه سيتم إنشاء معرف آخر فريدة من نوعها إلى هذا الكمبيوتر.هذا هو التأكد من أن اثنين من أجهزة الكمبيوتر لم يكن لديك نفس معرف.

التحدي: على البرنامج أن تكون قادرة على توليد هوية فريدة من نوعها على جهاز كمبيوتر ، فإنه يحتاج إلى إجراء حساب استنادا إلى بذرة فريدة من نوعها على جهاز الكمبيوتر المنفذة.

سؤالي: كيف يمكنني الحصول على قيمة فريدة من نوعها على جهاز الكمبيوتر التي يمكن استخدامها قيمة البذور في هوية الجيل البرنامج ؟

هل من الممكن الحصول على قيمة من جهاز الكمبيوتر(على سبيل المثال اللوحة الأم) التي هي فريدة من نوعها إلى أن الكمبيوتر ؟ وبهذه الطريقة فإن القيمة هي على الأرجح لن يتغير طالما اللوحة الأم لجهاز الكمبيوتر لا يتم استبدال.

هل كانت مفيدة؟

المحلول

MAC العنوان ؟ أن يكون (عمليا) فريدة من نوعها إلى كل NIC لذلك لضمان القدرة على التكاثر حتى إذا كان المستخدم هو تمهيد مزدوج.متأكد من أن هناك حالات نادرة من الناس بطاقات التجاري ، ولكن إلى جانب مقاييس أخرى (لا تستخدم فقط هذا لأن بطاقات الشبكة يمكن تغييرها), فإنه لا يزال من الممكن.

كيف يمكنك الحصول على ذلك ؟

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

    return networkInterface.getHardwareAddress();
}

إذا كنت ترغب في تمثيل سلسلة فعل هذا

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)

ملاحظة: كما ذكر في التعليقات, عناوين Mac يمكن المغشوش.ولكن نتحدث عن جزء صغير من السكان القيام بذلك ، ما لم الخاص بك باستخدام هذا من أجل مكافحة القرصنة أشياء فريدة من نوعها بما فيه الكفاية.

نصائح أخرى

Win32 يولد الكمبيوتر معاوية ، التي من المفترض أن تكون فريدة من نوعها لكل التثبيت التي يمكنك الحصول عليها عبر WMI أو Active Directory, ولكن هذا هو الى حد منصة محددة.يمكنك أيضا استخدام عنوان MAC ، كما أي شخص آخر قد ذكر فقط تأكد من أن محول الشبكة الفعلية ، كما الظاهري محولات تميل إلى مشاركة نفس عنوان MAC عبر أجهزة الكمبيوتر.

ومع ذلك ، UUID (أو GUID) 128 بت الأرقام التي هي من المفترض أن تكون مضمونة فريدة من نوعها, و قد أنشئت لغرض حل مشكلة توليد المعرفات الفريدة من نوعها عبر متعددة, آلات عشوائية.وفقا لويكيبيديا:

لوضع هذه الأرقام في المنظور ، واحد السنوي خطر التعرض للضرب من قبل نيزك يقدر أحد فرصة في 17 مليار دولار ، [25] وهذا يعني احتمال عن 0.00000000006 (6 × 10-11) ، أي ما يعادل احتمالات خلق بضع عشرات التريليونات من UUIDs في السنة وبعد واحد مكررة.وبعبارة أخرى إلا بعد توليد 1 مليار UUIDs كل الثانية لمدة 100 سنة القادمة ، احتمال إنشاء واحد فقط مكررة سيكون حوالي 50%.على احتمال تكون مكررة حوالي 50 ٪ إذا كان كل شخص على وجه الأرض يملك 600 مليون UUIDs.

إجمالي عدد التركيبات الممكنة 2^128 (أو 3 × 10^38), لذلك أنا أميل إلى تصديق ذلك.أيضا, الحديثة UUID المولدات لا تستخدم V1 خوارزمية بعد الآن (أيواحد على أساس إيقاف التشغيل MAC address), لأنه يعتبر قضية أمن يرجع ذلك إلى حقيقة أن أحد يمكن أن أقول عندما GUID ولدت و الذي ولدت فيه.في Win32 العالم التصحيح الأمني حوالي Win2K أو NT 4 تغير استخدام V4 نسخة من الخوارزمية ، الذي هو أساس الخروج من عدد شبه عشوائي بدلا من ماك ، JVM دائما استخدام V3/V4 الإصدار.

تحرير:الطريقة المستخدمة لتوليد UUID في جافا via java.util.UUID الدرجة.

طريقة سهلة للقيام بذلك هو قراءة إيثرنت الأجهزة ، أو "ماك" العنوان.

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

عناوين Mac ليست تماما فريدة من نوعها كما يظن الناس ، كما أنها لا تحصل على استخدامها مع مرور الوقت.ولكن احتمالات تطبيق واحد أو شبكة وجود اثنين منها متطابقة منخفضة جدا.

عنوان MAC هو فريدة من نوعها بالنسبة لك.انظر http://en.wikipedia.org/wiki/MAC_address

أنت لم تحدد اللغة التي كنت تستخدم.ربما من الأسهل في بعض اللغات من غيرها.هنا هو كيف نفعل ذلك في جافا http://www.kodejava.org/examples/250.html.جوجل حول اللغة الخاصة بك.

الخيار الأفضل هو قاعدة الهوية على عنوان MAC الابتدائي محول شبكة الاتصال.

هذا هو يحتمل أن تكون عرضة للتغيير في somepoint ، ولكن حتى أي واحد من العنصر.

لمعلوماتك Guid يتم حساب باستخدام عنوان MAC.

هل الوصول إلى أي من المعلومات المذكورة في هذه المقالة ؟ ويندوز فقط

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

الرقم التسلسلي الأصول الوسم

خيار آخر المنتدى كنت تستخدم رقائق إنتل المعالج الرقم التسلسلي ، على افتراض انك يمكن ضمان تمكين الميزة.انظر إنتل مسلسل # ملاحظة للحصول على مزيد من المعلومات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top