Как говорится, без комментариев, перевод в BASE64 в 1С7.7
Функция КодироватьBase64(Текст) Перем Алфавит; Перем Группа, Символ; Перем Значение, Разряд; Перем Символ6, Значение6; Перем Значение8, Символ8; Перем Текст64; // Подготовка алфавита и результата Алфавит = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; Текст64 = ""; Группа = ""; Для Номер=1 По СтрДлина(Текст) Цикл Символ = Сред(Текст, Номер, 1); Группа = Группа + Символ; Если ((СтрДлина(Группа) = 3) или (Номер = СтрДлина(Текст))) Тогда // Получение числового значения из 3-х символов Значение = 0; Разряд = 2; Пока Разряд >= 0 Цикл Символ8 = Сред(Группа, 3 - Разряд, 1); Значение8 = КодСимв(Символ8); Если Разряд = 1 Тогда Значение8 = Значение8 * 256; ИначеЕсли Разряд = 2 Тогда Значение8 = Значение8 * 256 * 256; КонецЕсли; Значение = Значение + Значение8; Разряд = Разряд - 1; КонецЦикла; // Получение 4-х символов из числового значения Разряд = 3; Пока Разряд >= 0 Цикл Значение6 = Значение; Если Разряд = 3 Тогда Значение6 = Цел(Значение6 / 64 / 64 / 64); Значение = Значение - Значение6 * 64 * 64 * 64; ИначеЕсли Разряд = 2 Тогда Значение6 = Цел(Значение6 / 64 / 64); Значение = Значение - Значение6 * 64 * 64; ИначеЕсли Разряд = 1 Тогда Значение6 = Цел(Значение6 / 64); Значение = Значение - Значение6 * 64; КонецЕсли; Если СтрДлина(Группа) < 3 Тогда Если Значение6 = 0 Тогда Значение6 = 64; КонецЕсли; КонецЕсли; Символ6 = Сред(Алфавит, Значение6+1,1); Текст64 = Текст64 + Символ6; Разряд = Разряд - 1; КонецЦикла; Группа = ""; КонецЕсли; КонецЦикла; Возврат Текст64; КонецФункции