Для сквозной зашифрованной связи между клиентом и сервером я реализую алгоритм шифрования / дешифрования.
Однако они (шифрование / дешифрование и кодирование / декодирование base64) работают нормально только тогда, когдаон в Ruby.
Но реальная проблема, которую я вижу, связана с кодировкой Ruby Base64.
Например, допустим, у меня есть ключ AES (32 байта):
"\"1\xAF\xC7\xC0\xA6\xC9\xBA\xD6\x9F\xBA\xD2\xC9\xBE\x0F\x8E*\x88\x87(\x9B\xCBp\x15!/\x13\x8F\xCE\xFB\x15\x9B"
, который я использую для шифрования данных в алгоритме AES.
Я хочу отправить этот ключ клиенту в формате Base64.Для этого я делаю (два способа, каждый из которых производит разные закодированные выходные данные):
Введите двойные кавычки
Base64.urlsafe_encode64("\"1\xAF\xC7\xC0\xA6\xC9\xBA\xD6\x9F\xBA\xD2\xC9\xBE\x0F\x8E*\x88\x87(\x9B\xCBp\x15!/\x13\x8F\xCE\xFB\x15\x9B")
# => "IjGvx8CmybrWn7rSyb4PjiqIhyiby3AVIS8Tj877FZs="
Введите одинарные кавычки
Base64.urlsafe_encode64('\"1\xAF\xC7\xC0\xA6\xC9\xBA\xD6\x9F\xBA\xD2\xC9\xBE\x0F\x8E*\x88\x87(\x9B\xCBp\x15!/\x13\x8F\xCE\xFB\x15\x9B')
# => "XCIxXHhBRlx4QzdceEMwXHhBNlx4QzlceEJBXHhENlx4OUZceEJBXHhEMlx4QzlceEJFXHgwRlx4OEUqXHg4OFx4ODcoXHg5Qlx4Q0JwXHgxNSEvXHgxM1x4OEZceENFXHhGQlx4MTVceDlC"
Выход 1 отличается от всех других библиотек: Java, Swift и онлайн-сайт , другой сайт , которые все выдают одинаковый вывод.
Выход 2 аналогичен другим библиотекам в отношении выходной кодировки.Но у меня есть проблемы с преобразованием ключа AES и зашифрованных данных AES для использования в одинарных кавычках, что невозможно, поскольку у меня есть зашифрованные данные, которые уже содержат эти одинарные кавычки и другие недопустимые символы, для которых кодировка Ruby Base64 не работает правильно.
Любая помощь будет оценена.