Итак, вот хитрость:
> openssl enc -a -e -salt -des3 -P -pass pass:abc123
salt=17685C0658F85BA4
key=1CB6E5A0AA4953EC2323CBA021EF008C9193F5F29990DE87
iv =9148EB5B2BF2E9B2
Если я использую алгоритм TripleDES , вывод будет почти таким же, как вывод openssl.Единственная разница - дополнительные 16 байтов в начале вывода openssl.Первые восемь из этих байтов - это текст «Salted__», а вторые восемь - это соль.
Соль - случайная.Так как мне получить ключ и iv из пароля и соли? PBKDF1 или PBKDF2 не соответствует требованиям.
Итак, вот второй прием:
A = MD5(pwd + SALT)
B = MD5(A + PWD + SALT)
KEY + IV = A + B
Знак плюс означает объединение, ключ24 байта в длину и IV - 8 байтов.
Я узнал об этом приеме из Deusty blog , где он делает подобные вещи с AES.