|
Rand
|
|||
---|---|---|---|
#18+
В РВ есть псевдогенератор случайных чисел. Код: plaintext 1. 2.
2. Можно ли как-то зная i и n найти k? Либо есть другой какой-то ГСЧ, чтобы можно было делать такие вычисления (например, откат назад)? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2010, 04:28 |
|
Rand
|
|||
---|---|---|---|
#18+
используй счетчик если надо знать сколько прошло итераций... -- вопросы какие-то непонятные. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2010, 15:22 |
|
Rand
|
|||
---|---|---|---|
#18+
AISВ РВ есть псевдогенератор случайных чисел. Код: plaintext 1. 2.
2. Можно ли как-то зная i и n найти k? Либо есть другой какой-то ГСЧ, чтобы можно было делать такие вычисления (например, откат назад)? Ф-я PB Rand реализована внутри через функцию rand() из C: Код: plaintext 1. 2. 3.
Сама сишная ф-я rand реализована так Код: plaintext 1. 2. 3. 4.
Теперь ответы на вопросы. а) У этого генератора период - 2^32 (специально подобранные константы) б) Из-за потери младших 16 битов при возврате результата, невозможно однозначно узнать seed имея результат функции. в) Однако учитывая простоту ф-и, вполне можно перебором найти множество чисел являющихся ответом на ваш вопрос. Более того перебор можно существенно сократить используя методы криптоанализа. Только я одного не понял - а зачем все это? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2010, 20:39 |
|
Rand
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky , большое спасибо за информацию. Причина в том, что нравится мне MD5 и именно тем, что при любом изменении входного значения "лавинообразно" меняется значение выходного. Но длинна выходного значения большая. Есть мысль генерировать подобным образом первичный ключ в таблице(M) БД. Т.е. если на вход "MD5" подать значения этих ключей (от 1 до 10^?), то все они будут одной длины и практически не смогут быть упорядочены и ассоциированы с реальными их значениями. И тут мне кажется :), что если БД у меня в "открытом виде", то доступ к таблице(M) с важной информацией можно сделать наподобие "входа по паролю". Т.е. пароль - это внешний ключ в таблице(Х), хеш которого - есть первичный ключ в таблице(M). Есть скрипт с подобной "лавинообразной" характеристикой MD5, но длиной от 4 до 8 символов и установкой параметров кодирования. Используются эти функции РВ. От сюда и интерес: можно ли "откатиться назад"? Есть ли вероятность повтора при заданном кол-ве перв.ключей? Ну, и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2010, 23:57 |
|
Rand
|
|||
---|---|---|---|
#18+
AISЕсть мысль генерировать подобным образом первичный ключ в таблице(M) БД. Т.е. если на вход "MD5" подать значения этих ключей (от 1 до 10^?), то все они будут одной длины и практически не смогут быть упорядочены и ассоциированы с реальными их значениями. И тут мне кажется :), что если БД у меня в "открытом виде", то доступ к таблице(M) с важной информацией можно сделать наподобие "входа по паролю". Т.е. пароль - это внешний ключ в таблице(Х), хеш которого - есть первичный ключ в таблице(M). Если вам нужно скрыть значение поля, то просто зашифруйте его. Причем здесь генерация ключей? Вот например алгоритм шифрования 3DES имеет размер блока 8 байт, с помошью чего можно шифровать числа до 2^64. Для хранения такого зашифрованного числа можно использовать либо NUMERIC(20) либо VARCHAR(12) (base64) либо BIGINT. И никаких проблем с преобразованиями в любую сторону. И никаких проблем с повторами - если исходное число было уникальным, то и шифр - тоже. А у Rand() не смотря на то что период - 2^32 но повторы встречаются гораздо чаще: не реже чем 1 на 32768 значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 10:02 |
|
Rand
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky , шифрование уже рассматривал (но правда не 3DES). Был минус в тех вариантах, которые рассматривал: - длина выходного значения "соответствует" длине входного и нет "лавинообразного" изменения выходного значения, и следовательно последовательность вых.ключей можно отсортировать и, зная значения вход.ключей, уже предсказать "что где". Основная сложность (как мне кажется) в поиске решения этой задачи, что известны значения вход. и вых. ключей и поэтому тут даже дешифрировать возможно не придеться, а просто найти соответствие ключей (тем более что это 1 к 1-му). P.S. За подсказку про 3DES, спасибо. Почитаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 11:17 |
|
Rand
|
|||
---|---|---|---|
#18+
AIS шифрование уже рассматривал (но правда не 3DES). Был минус в тех вариантах, которые рассматривал: - длина выходного значения "соответствует" длине входного и нет "лавинообразного" изменения выходного значения, Это вы что-то не то рассматривали. Любой криптостойкий алгоритм шифрования дает настолько мизерную корелляцию между входом и выходом, что не существует никаких способов кроме перебора всех вариантов ключей для расшифровки. Например в 3DES это 2^112 вариантов, что исключает возможность перебора в разумное время. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 12:03 |
|
|
start [/forum/topic.php?fid=15&gotonew=1&tid=1336012]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 453ms |
0 / 0 |