Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 2
Регистрация: 22.12.2014
Сообщений: 159

Закодировать массив байтов в base64

05.12.2017, 21:20. Показов 3765. Ответов 0

Студворк — интернет-сервис помощи студентам
Добрый вечер, товарищи помогите пожалуйста, если вообще такое можно сделать на javascript.
В общем был кода на java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import android.text.TextUtils;
import android.util.Base64;
 
public class EncodeDecodeHelper {
    private static final String KEY = "3255c246-4b9f-43a5-b2dd-63524f959953\n";
 
    public static String encode(String password) {
        byte[] txt = password.getBytes();
        byte[] key = KEY.getBytes();
        byte[] result = new byte[txt.length];
        for (int i = 0; i < txt.length; i++) {
            result[i] = (byte) (txt[i] ^ key[i % key.length]);
        }
        return Base64.encodeToString(result, 0).replaceAll("\n", "");
    }
Я его для своей программы на c# успешно переписал за минуту. Но мне теперь понадобилось для веб приложения такая же функция.
Решил попробовать переписать на javascript сравнил все значения все байты всё совпадает, но вот последнюю строчку не могу одолеть, а именно закодировать массив байтов в base64.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html>
<script>
function toUTF8Array(str) {
    var utf8= unescape(encodeURIComponent(str));
    var arr= new Array(utf8.length);
    for (var i= 0; i<utf8.length; i++)
        arr[i]= utf8.charCodeAt(i);
    return arr;
}
var text = toUTF8Array("Qwerty123"); // байты 81 119 101 114 116 121 49 50 51 
var key =  toUTF8Array("3255c246-4b9f-43a5-b2dd-63524f959953\n"); // байты 51 50 53 53 99 50 52 54 45 52 98 57 102 45 52 51 97 53 45 98 50 100 100 45 54 51 53 50 52 102 57 53 57 57 53 51 10 
var result = new Uint8Array(text.length); // 0 0 0 0 0 0 0 0 0 
function Encode() 
{
          for (var i= 0; i<text.length; i++)
          { result[i] = (text[i] ^ key[i % key.length]);}
          return  btoa(result).replace("\n","");
}
document.write(Encode());
</script>
</html>
Сравнил содержимое массивов переменных с теми, что у меня в c# всё тоже самое, то есть тут ошибку я не допустил. Сравнил содержимое того, что в цикле там получается результат вроде такой же как и в c#. Итого смущает меня две вещи, это то, что в ява и c# result[i] результат кастуется в (byte) такого я не нашел как переписать под js и последнее собственно само кодирование, на выходе я получаю совсем левую строку "OTgsNjksODAsNzEsMjMsNzUsNSw0LDMw" что соответствует массиву "98,69,80,71,23,75,5,4,30".
А должен я в результате кодирования получить "YkVQRxdLBQQe"
Где-то лазил, искал нашел что base64.encode использует то ли 4 байта в общем не так кодирует как в c#.
Кликните здесь для просмотра всего текста



Скрин с c# программы приложил, совпадает всё один в один, но кодирует в "OTgsNjksODAsNzEsMjMsNzUsNSw0LDMw" вместо "YkVQRxdLBQQe".
Может кто помочь как мне в последней строчке получить "YkVQRxdLBQQe" ? Спасибо.
P.S. в JS на уровне обезьяны с палкой )

Добавлено через 12 минут
Блин пока писал оду, нашел как сделать, может кому пригодится:
JavaScript
1
var  base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(result))); //result - ваш массив байтов.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.12.2017, 21:20
Ответы с готовыми решениями:

Закодировать в base64 utf8-кирилицу
HTML-страничка в utf8 кодировке. По событию вызываю prompt() и ввожу русский текст. Теперь его надо закодировать в base64, чтоб потом...

Конвертирование изображения в массив байтов
Дан тег img, свойство src указывает не путь к файлу, а код изображения. Как зная это получить байты ? Пример :

Как прочитать .pdf в массив байтов используя jscript
Доброго времени суток! На десктопном приложении имеется С:\file.pdf . Мне надо записать этот файл в базу MS SQL базу данных скриптом...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.12.2017, 21:20
Помогаю со студенческими работами здесь

Как закодировать в base64?
Как закодировать в base64_encode() строку вида {&quot;site&quot;: &quot;sait.ru&quot;, &quot;text&quot;:&quot;какой то текст&quot;} не могу заэкранировать все...

Закодировать dict в base64
И снова здравствуйте!) Ребят помогите разобраться как решить задачу, а задача в следующем. Имеем dict: { 'Okpo': '52750822', ...

Закодировать текст в base64 между тегами <ZZ> и </ZZ>
Здравствуйте!:) Уважаемые гуру javа прошу подсказать.. Необходимо модифицировать код для того что бы закодировать часть XML файла ...

Декодировать и закодировать MD5 (base64) hash
Нужно закодировать пароль. Есть пароль zeonefergma, в MD5 (base64) как его определяют многие сайты и программы он закодирован так...

Как правильно закодировать фаил в base64
Помогите разобраться. Беру фаил кодирую его в base64./ ::ToBase64String(::ReadAllBytes($FileName)) &gt;&gt; 1.txt далее беру из фаила...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru