2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Base64
Сообщение15.10.2012, 02:09 
На своём сайте мне необходимо кодировать текст используя Base64.
Исходный текст: 123.456.789.1
Закодированный текст: MTIzLjQ1Ni43ODkuMQ==

Бесят знаки "==", т.к. закодированный текст я должен дать пользователю в качестве секретного ключа. Вы часто встречаете ключи со знаками равенства? Я не разу :-). Попробовал раскодировать без них и получил исходный текст: 123.456.789.1
Вопрос: Если я буду убирать эти знаки равенства перед раскодированием, то у меня всегда один и тот же результат будет получаться? Т.е. можно ли их опустить?

 
 
 
 Re: Base64
Сообщение15.10.2012, 21:40 
Аватара пользователя
Читайте RFC 4648, 1421, 2045.

 
 
 
 Re: Base64
Сообщение16.10.2012, 04:18 
chessar, спасибо, но, во-первых, не знаю английский, во-вторых, решил использовать свой алгоритм :-)
Тема закрыта.

 
 
 
 Re: Base64
Сообщение16.10.2012, 22:45 
Знаки равенства — это заполнитель. Тут смысл в чем: три байта (24 бита) режутся на четыре шестибитки, и каждая шестибитка превращается в букву/цифру. Т.е. длина выходной строки кратна четырем. Но если у вас не ровно $3k$ байт, а $3k+1$ или $3k+2$ байт, то остаточные 8/16 байт дополняются справа нулями до 12/18 бит (2/3 шестибитки соответственно), после чего длина выходной строки уж на четыре не делится — не хватает 2/1 символа. Ну, вот эти пустые места и забиваются знаками равенства. Их спокойно можно выбросить, в процессе декодирования они все равно не учитываются.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group