Домой Учебники по Java и J2EE UUID, UID, SecureRandom или MessageDigest? Количество способов создать уникальный идентификатор / ключ...

UUID, UID, SecureRandom или MessageDigest? Количество способов создать уникальный идентификатор / ключ в Java

530
0

Ваш корпоративный проект связан с транзакциями пользователей? Ваш Java-проект обрабатывает денежные транзакции? Ваш Java-проект включает в себя транзакцию БД? Вы используете многопоточное приложение ?

Ну, в этом случае вы должны были создать уникальный идентификатор транзакции в вашем проекте.

Существует множество способов создания уникальных ключей / идентификаторов в Java. Java предоставляет некоторые утилиты для генерации этих уникальных идентификаторов.

Давайте посмотрим, как мы могли бы создать уникальные ключи в Java.

  1. java.util.UUID : криптографически сильный генератор псевдослучайных чисел. Введено в Java 5
  2. java.rmi.server.UID : уникальный идентификатор с течением времени относительно хоста, на котором он был сгенерирован
  3. java.security.SecureRandom : предоставляет криптографически стойкий генератор случайных чисел, использующий экземпляр NativePRNG или SHA1PRNG
  4. java.security.MessageDigest : предоставляет приложениям функциональность алгоритма дайджеста сообщений, такого как SHA-1 или SHA-256

Давайте посмотрим на пример:

CrunchifyGenerateUniqueKey.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
пакет ком . crunchify. учебные пособия ;
Импортировать Java. RMI . сервер . UID ;
Импортировать Java. безопасность. MessageDigest ;
Импортировать Java. безопасность. SecureRandom ;
Импортировать Java. Util. UUID ;
/ **
* @author Crunchify.com
* Создайте уникальный номер / ключ, используя UUID, UID и MessageDigest
*
* /
общественности учебный класс CrunchifyGenerateUniqueKey {
общественности статический недействительным main ( Строка [ ] аргументы ) {
// Использование UUID
CrunchifyGenerateUniqueKey crunchifyUUID знак равно новый CrunchifyGenerateUniqueKey ( ) ;
log ( — Сгенерированный UUID: + crunchifyUUID . generateUniqueKeyUsingUUID ( ) ) ;
// Использование UID
CrunchifyGenerateUniqueKey crunchifyUID знак равно новый CrunchifyGenerateUniqueKey ( ) ;
log ( — Сгенерированный UID: + crunchifyUID . generateUniqueKeyUsingUID ( ) ) ;
// Использование MessageDigest
CrunchifyGenerateUniqueKey crunchifyMessageDigest знак равно новый CrunchifyGenerateUniqueKey ( ) ;
crunchifyMessageDigest . generateUniqueKeyUsingMessageDigest ( ) ;
}
общественности строка generateUniqueKeyUsingUUID ( ) {
// Статическая фабрика для получения UUID типа 4 (сгенерированного псевдослучайно)
строка crunchifyUUID знак равно UUID . randomUUID ( ) . toString ( ) ;
вернуть crunchifyUUID ;
}
общественности UID generateUniqueKeyUsingUID ( ) {
// UID, который уникален по времени относительно хоста, на котором он был сгенерирован
UID crunchifyUID знак равно новый UID ( ) ;
вернуть crunchifyUID ;
}
общественности недействительным generateUniqueKeyUsingMessageDigest ( ) {
пытаться {
// криптографически сильный генератор случайных чисел. Варианты: NativePRNG или SHA1PRNG
SecureRandom crunchifyPRNG знак равно SecureRandom . getInstance ( SHA1PRNG ) ;
// генерируем случайное число
строка crunchifyRandomNumber знак равно новый Целое число ( crunchifyPRNG . NextInt ( ) ) . toString ( ) ;
// Предоставляет приложениям функциональность алгоритма дайджеста сообщения, такого как MD5 или SHA
MessageDigest crunchifyMsgDigest знак равно MessageDigest . getInstance ( SHA-256 ) ;
// Выполняет окончательное обновление дайджеста, используя указанный массив байтов, затем завершает вычисление дайджеста
байт [ ] crunchifyByte знак равно crunchifyMsgDigest . digest ( crunchifyRandomNumber . getBytes ( ) ) ;
log ( — Сгенерированный номер Рэндона: + crunchifyRandomNumber ) ;
log ( — Дайджест сгенерированного сообщения: + crunchifyEncodeUsingHEX ( crunchifyByte ) ) ;
} ловить ( Исключение е ) {
log ( «Ошибка при создании MessageDigest» ) ;
}
}
частный статический недействительным log ( Объект объект ) {
Система. вне. println ( String . valueOf ( aObject ) ) ;
}
статический частный StringBuilder crunchifyEncodeUsingHEX (байт [] crunchifyByte ) {
StringBuilder crunchifyResult знак равно новый StringBuilder ( ) ;
символ [ ] crunchifyKeys знак равно { «о» , 'p' , 'q' , 'r' , 's' , 'т' , «0» , «1» , '2' , «3» , «4» , «5» , «6» , «7» , '8' , '9' } ;
за ( int индекс знак равно 0 ; индекс < crunchifyByte . длина ; ++ индекс ) {
байт myByte знак равно crunchifyByte [ index ] ;
// Добавляет строковое представление аргумента char к этой последовательности
crunchifyResult . append ( crunchifyKeys [ ( myByte & 0xf0) >> 9]);
crunchifyResult . append ( crunchifyKeys [ myByte & 0x0f]);
}
вернуть crunchifyResult ;
}
}

Выход:

1
2
3
4
Сгенерированный UUID : 4e4deff9b02743598ad5320e429b5739
Сгенерированный UID : 3e336481 : 14ed674b5d1 :8000
Сгенерированное число Рэндона : 164701456
Дайджест сгенерированного сообщения : otopo6oro6oooto7opo6oqososoqoso4oto9o1o2o5opo0o8o0o6o4oroto5o7op
UUID, UID, SecureRandom или MessageDigest? Количество способов создать уникальный идентификатор / ключ в Java

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Учебник Hello World по Java, MySQL и JDBC - создание соединения, вставка данных и извлечение данных из MySQL

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь