Какая строка является правильной в этой базовой кодировке 64? - PullRequest
0 голосов
/ 11 марта 2012

Я новичок в base64.Я сделал несколько тестов.Я видел несколько странностей

Когда я кодирую "Nguyen Tran Viet A" с помощью терминала, он выдает:

vietiPhone:~ vietnt$ echo "Nguyen Tran Viet A" | openssl enc -base64
Tmd1eWVuIFRyYW4gVmlldCBBCg==

Но затем я запускаю несколько библиотек (в Objective-C), он выдает:

Tmd1eWVuIFRyYW4gVmlldCBB

Что правильно?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 11 марта 2012

echo создает EOL в конце вывода, поэтому он кодируется с помощью OpenSSL.Попробуйте вариант -n:

$ echo -n "Nguyen Tran Viet A" | openssl enc -base64
Tmd1eWVuIFRyYW4gVmlldCBB
2 голосов
/ 11 марта 2012

Разница - это символ конца строки.Когда вы используете "echo", он выводит новую строку:

base64 -D | od -c
Tmd1eWVuIFRyYW4gVmlldCBBCg==

0000000    N   g   u   y   e   n       T   r   a   n       V   i   e   t
0000020        A  \n                                                    
0000023

В примере ObjC нет новой строки.Вы, вероятно, сделали что-то вроде

[@"Nguyen Tran Viet A" base64Encode]

, которое выдает:

base64 -D | od -c
Tmd1eWVuIFRyYW4gVmlldCBB

0000000    N   g   u   y   e   n       T   r   a   n       V   i   e   t
0000020        A                                                        
0000022

Нет завершающей строки.Так что они оба верны - вы просто закодировали немного разные вещи.

2 голосов
/ 11 марта 2012

Это потому, что команда echo добавляет \n после строки в STDOUT .Чтобы предотвратить это.Используйте следующий синтаксис,

echo -n "Nguyen Tran Viet A" | openssl enc -base64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...