8

Я хотел бы знать алгоритм или метод, используемые этой командой (mvn --encrypt-master-password). Каждый раз, когда я запускаю его, создается другой вывод. Я предполагаю, что для параметра затравки требуется системное время.Как работает mvn --encrypt-master-password <password>?

ответ

8

Механизм шифрования не находится в кодовой базе maven как таковой. Он расположен в библиотеке под названием plexus-cipher. Он всегда находится на распределении maven. Шахта находится на lib/plexus-cipher-1.7.jar является 3.0.5 версия maven.

Фактический шифр AES/CBC/PKCS5Padding. Ключ для шифрования и IV для цепной цепочки выведен из итерации SHA-256 - через предоставленный пароль (кодированный как UTF-8), объединенный с 64-битной случайной солью (обычно SHA1PRNG) один раз или два раза.

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

окровавленные детали можно найти прочитав источник на GitHub project page

+0

Таким образом, 64-битное случайное соль обеспечивает уникальность каждый раз, но соль нуждается в семени, а также, это системное время или что-то еще? – SDS

+1

Зависит от случайной реализации PRNG, которую он находит в первую очередь. Например, в linux 'NativePRNG' инициализирует себя, считывая свое семя из'/dev/random', что является причиной для производительности kerfuffle. Я не могу сказать, какие системные ресурсы использует резервный 'SHA1PRNG'. –

+0

Спасибо за объяснение – SDS