Требование:
У меня есть приложение Ruby на рельсах, и мне нужно сделать следующее.
Следующая строка должна быть зашифрована с использованием алгоритма 3DES и рабочего ключа. Зашифрованное значение для ABJGTU9 будет vV51P0OGXt0 =
, рабочий ключ - A5157A0D77B24AEA868AD73288366826
Алгоритм 3DES, упомянутый в следующем документе, использует следующие шаги для шифрования данных: i. Зашифруйте данные, используя левую часть ключа, используя режим шифрования CB C и заполнение PKCS7. II. Расшифруйте данные, используя правую часть ключа в режиме шифрования CB C и без заполнения. III. Шифрование данных с использованием левой части ключа в режиме шифрования CB C и без заполнения.
Я попробовал следующее article Это то, что я сделал, и мой вывод "hsYUuA/Mo6A=\n"
Ожидаемое значение vV51P0OGXt0=
cipher = OpenSSL::Cipher::Cipher.new('DES-EDE3-CBC')
cipher.encrypt # Must be called before anything else
# Generate the key and initialization vector for the algorithm.
# Alternatively, you can specify the initialization vector and cipher key
# specifically using `cipher.iv = 'some iv'` and `cipher.key = 'some key'`
# cipher.pkcs5_keyivgen('SOME_PASS_PHRASE_GOES_HERE')
key = Digest::MD5.base64digest('A5157A0D77B24AEA')
cipher.key = key
data = "ABJGTU9"
output = cipher.update(data)
output << cipher.final
output
end
Я не уверен, правильно ли я иду.