Мы не можем для жизни из нас понять это. Нам нужно заставить ColdFusion шифровать данные, которые Ruby расшифрует. Мы перепробовали так много разных настроек на стороне ColdFusion, просмотрели сообщения SO, просмотрели документы Adobe и не смогли заставить их работать. ColdFusion необходимо зашифровать его, чтобы ruby мог сделать это:
aes = OpenSSL::Cipher::Cipher.new('aes-256-cbc').encrypt
aes.key = Digest::MD5.hexdigest("#{password}#{salt}")
aes.iv = Digest::MD5.hexdigest("#{salt}#{password}")[0,16]
encrypted = aes.update(data) + aes.final
Псевдокод ColdFusion
key = tobase64(binaryDecode(lcase(hash(password & salt, "md5")), "hex"))
iv = lcase(left(hash(salt & password, "md5"), 16))
encrypt(data, key, "AES/CBC/PKCS5Padding", "Base64", iv)
Пробовал с/без tobase64
/binaryDecode
(видел, что кто-то упомянул, что он будет обрабатывать обратное преобразование внутри или что-то глупое). lcase
заключается в том, чтобы заставить его генерировать MD5, похожие на то, что строит ruby.
Что мы делаем не так? Бесконечные bad decrypt
на рубиновой стороне