Почему балерина не обеспечивает кодирование и декодирование base64, а только кодирование и декодирование base64URL - PullRequest
0 голосов
/ 22 января 2020

Я заметил, что в пакете кодирования ballerina нет метода для encodeBase64 / decodeBase64, а есть encodeBase64URL / decodeBase64URL.

, когда я использую это и работаю с другими библиотеками кодирования base64, результаты не совпадают

1 Ответ

6 голосов
/ 22 января 2020

Кодирование base64 [1] и кодирование base64 URL [2] различаются. Балерина предоставляет API-интерфейсы кодирования / декодирования base64 из самого языка. Вы можете использовать модуль ballerina/encoding для кодирования / декодирования URL base64.

import ballerina/io;

public function main() {
    string input = "Hello Ballerina!";
    byte[] inputArr = input.toBytes();
    string encodedString = inputArr.toBase64();
    io:println(encodedString);
}

Дополнительные примеры приведены в крипто BBE [3].

[1] https://tools.ietf.org/html/rfc4648#section -4

[2] https://tools.ietf.org/html/rfc4648#section -5

[3] https://ballerina.io/v1-1/learn/by-example/crypto.html


[ОБНОВЛЕНИЕ] Пример для кодирования / декодирования base64.

import ballerina/io;
import ballerina/lang.'array as arr;
import ballerina/lang.'string as str;

public function main() returns error? {
    string input = "Hello Ballerina!";
    byte[] inputArr = input.toBytes();
    string encodedString = inputArr.toBase64();
    io:println(encodedString);

    byte[] decoded = check arr:fromBase64(encodedString);
    string decodedString = check str:fromBytes(decoded);
    io:println(decodedString);
}
...