Определение алгоритма шифрования с использованием известных хеш-кодов - PullRequest
1 голос
/ 23 декабря 2011

Мои коллеги используют коммерческую программу, которая кодирует и сохраняет пароли для входа в какую-либо базу данных.

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

ПроблемаЯ не имею (и, вероятно, никогда не буду) никакого исходного кода, чтобы определить, какой алгоритм шифрования они использовали.Я провел несколько тестов и заметил, что одни и те же пароли всегда дают одинаковые хеш-коды длиной 24 символа.Например;

1         XeVTgalUq/gJxHtsMjMH5Q== 

123456    0Q8UhOcqClGBxpqzooeFXQ==

Есть ли способ определить, какой алгоритм они использовали?Заранее спасибо,

1 Ответ

0 голосов
/ 23 декабря 2011

Неа. Это точка шифрования / хэширования - она ​​должна быть непрозрачной, чтобы ее было нелегко перепроектировать. Единственное, что вы можете сделать, это попробовать несколько известных алгоритмов хеширования, таких как SHA-1, и посмотреть, соответствуют ли значения хеш-функции другой программе. Но нет никакого способа узнать, добавлена ​​ли другая программа в какую-либо «соль» или хэширует несколько вещей, например, логин + пароль или какая-то другая схема. Так что вам, вероятно, не повезло на этом фронте.

Одна идея, которую вы могли бы попробовать с вашей новой программой: если пользователь никогда ранее не входил в систему, разрешите ему войти в первый раз с ЛЮБЫМ паролем. Скажите пользователям, что они должны использовать тот же пароль, который они использовали с другой программой. Затем, когда они войдут в систему, запишите это значение и хешируйте его, используя собственную схему хеширования, а затем сохраните его для будущих входов. Таким образом, в конечном итоге вы получите результат, к которому вы стремитесь (чтобы пользователи могли использовать свои одинаковые пароли), без необходимости перепроектировать схему шифрования другой программы.

Теперь очевидным недостатком этого подхода является то, что он вообще не защищен для первого входа в систему. Кто-то может взломать учетную запись другого пользователя, если он вошел в систему под этим пользователем до того, как реальный пользователь сможет впервые войти в систему (и тем самым заблокировать свой пароль). Так что это только вариант, если в новой программе нет предварительно загруженных конфиденциальных данных, которые могли бы быть скомпрометированы. Также вам понадобится возможность администратора сбросить пароль пользователя, чтобы в таком случае вы могли легко его исправить, когда реальный пользователь сообщает, что он не может войти.

...