|
Как из байтиков типа (145,251,114) получить букафки? | ☑ | ||
---|---|---|---|---|
0
Sintez123
18.05.13
✎
02:16
|
Скоро запускаем новый спутник на орбиту, руководством было сказано "Теперь используйте только отечественные програмные продукты", было принято решение использовать 1с для системы навигации спутника. Так как спутник будет использоваться в том числе возможно в военных целях, необходимо зашифровать передаваемые данные.
Я написал код для шифрования с ключом, но получаю в результате массив байтов, тогда когда мне надо текст. Функция Символ(145) оказывается не подходит, так как байты у меня видимо или в ANSII или в OEM. Текст = Новый COMОбъект("System.Text.UTF8Encoding"); Крипто = Новый COMОбъект("System.Security.Cryptography.HMACSHA512"); Крипто.Key = Текст.GetBytes_4(Ключ); Хэш = Крипто.ComputeHash_2(Текст.GetBytes_4(Стр)).Выгрузить(); //Формируем из массива байт строку Стр = ""; Для Индекс = 0 по Хэш.ВГраница() Цикл Сообщить(Хэш[Индекс]); Стр = Стр + Символ(Хэш[Индекс]); КонецЦикла; Сообщить(Стр); Изменить нужно только одну вот эту строку, только она не верная Стр = Стр + Символ(Хэш[Индекс]); |
|||
1
Красный рассвет
18.05.13
✎
02:26
|
Сообщи номер своей планеты в тентуре или хотя бы номер галактики в спирали...
|
|||
2
Sintez123
18.05.13
✎
02:38
|
(1) А по делу не подскажешь? :)
|
|||
3
Reaper_1c
18.05.13
✎
02:45
|
(0) Графья Д'эбилы! А ничо, что платформа 1С написана на буржуйском C++?
|
|||
4
Sintez123
18.05.13
✎
02:55
|
(3) А ничо что про спутник просто шутка? :)
|
|||
5
Красный рассвет
18.05.13
✎
02:55
|
(2) Не могу, брат. Зобаняд. Хоть парика и компаса москвы не имею, но всё равно.... зобаняд
|
|||
6
DirecTwiX
18.05.13
✎
04:41
|
Вступление класс)
|
|||
7
vde69
18.05.13
✎
09:03
|
открой для себя СП и набери там base64
|
|||
8
Sintez123
18.05.13
✎
10:33
|
(7) не помогло :(
|
|||
9
vde69
18.05.13
✎
16:01
|
(8) 100% поможет, свой массив байтов шифруешь алгоритмом base64 (он встроен в платформу) и ГАРАНТИРОВАНО получишь строку.
|
|||
10
Sintez123
18.05.13
✎
16:28
|
(7) (9) не помогает - пустая строка получается, вот так делал:
Стр = Стр + Base64Строка(Хэш[Индекс]); |
|||
11
Sintez123
18.05.13
✎
16:30
|
(9) (7) возвращает "неопределно", смотрел в отладчике, при этом Хэш[Индекс] имеет тип значения число.
|
|||
12
Ковычки
18.05.13
✎
17:30
|
ХешБайт=Енкрипт.ComputeHash_2(Стрим.Read(-1));
Хеш=""; Для Каждого Байт Из ХешБайт Цикл Хеш = Хеш + Символ(Байт) + " "; КонецЦикла; |
|||
13
Ковычки
18.05.13
✎
17:32
|
ХТМЛ = Новый COMОбъект("htmlfile");
ХТМЛ.Open("text/html"); //<-- Подготовим нужные методы ХТМЛ.Write("<script> |ВнужнуюСистему=function(x,y){return x.toString(y?y:16)} |</script>"); Док=ХТМЛ.documentElement.document; // Все подготовке --> Это=Док.script; ХешБайт=Енкрипт.ComputeHash_2(Стрим.Read(-1)); Хеш=""; Для Каждого Байт Из ХешБайт Цикл Хеш = Хеш + Это.ВнужнуюСистему(Байт) + " "; КонецЦикла; |
|||
14
Ковычки
18.05.13
✎
17:34
|
а так преобразуй в двоичные данные а после в строку
|
|||
15
Sintez123
18.05.13
✎
17:42
|
(14) пробовал так
ХешБайт=Криптография.ComputeHash_2(Текст.GetBytes_4(Стр).Read(-1)); И вот так ХешБайт=Криптография.ComputeHash_2(Текст.Read(-1)); {Форма.Форма.Форма(283)}: Метод объекта не обнаружен (Read) ХешБайт=Криптография.ComputeHash_2(Текст.GetBytes_4(Стр).Read(-1)); |
|||
16
Sintez123
18.05.13
✎
17:44
|
Так тоже дает "неопределено"
Стр = ""; Для Каждого Байт Из Хэш Цикл //Сообщить(Хэш[Индекс]); Стр = Стр + Строка(Base64Значение(Байт)); КонецЦикла; Сообщить(Стр); |
|||
17
Sintez123
18.05.13
✎
17:46
|
Итак пробовал
Стр = ""; Для Каждого Байт Из Хэш Цикл //Сообщить(Хэш[Индекс]); Стр = Стр + Строка(Символ(Байт)); КонецЦикла; Сообщить(Стр); {Форма.Форма.Форма(297)}: Ошибка при вызове метода контекста (SHA512) ХэшSHA512 = SHA512(ХэшируемыйТекст, ""); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}param по причине: Ошибка при записи XDTO по причине: Текст XML содержит недопустимый символ в позиции 28 : ?6??l???]<o.??ZB9??PH n?kp«[J?slQT!?'?[email protected]????8°g?8?{?"G"]G |
|||
18
Sintez123
18.05.13
✎
17:48
|
(13) Вот этот вариант с ХТМЛ который выдал строку, но не ясно правильную ли
b9 36 ce e8 6c 9f 87 aa 5d 3c 6f 2e 84 cb 5a 42 39 a5 fe 50 48 a 6e c6 6b 70 ab 5b 1f 4a c6 73 c 6c 51 54 21 b3 27 ec 1d 69 40 2e 53 df b4 9a d7 38 1e b0 67 b3 38 fd 7b c b2 22 47 22 5d 47 |
|||
19
Ковычки
19.05.13
✎
14:45
|
Стрим это ADODB.Stream вмоем случае, в Вашем это строка обернутая в GetBytes_4
|
|||
20
Ковычки
19.05.13
✎
14:49
|
Хеш="";
Для Каждого Байт Из ХешБайт Цикл Хеш = Хеш + Прав("0"+Это.ВнужнуюСистему(Байт),2) + " "; КонецЦикла; |
|||
21
Ковычки
19.05.13
✎
14:50
|
А так без разницы, исхожные числа или преобразованные в хекс представление
|
|||
22
Sintez123
19.05.13
✎
16:19
|
(19) я вроде так и делал
ХТМЛ = Новый COMОбъект("htmlfile"); ХТМЛ.Open("text/html"); //<-- Подготовим нужные методы ХТМЛ.Write("<script> |ВнужнуюСистему=function(x,y){return x.toString(y?y:16)} |</script>"); Док=ХТМЛ.documentElement.document; // Все подготовке --> Это=Док.script; ХешБайт=Криптография.ComputeHash_2(Текст.GetBytes_4(Стр)).Выгрузить(); Хеш=""; Для Каждого Байт Из ХешБайт Цикл Хеш = Хеш + Это.ВнужнуюСистему(Байт) + " "; КонецЦикла; Сообщить(Хеш); |
|||
23
Sintez123
19.05.13
✎
16:21
|
(20) так тоже делал, выдает не то что надо
b9 36 ce e8 6c 9f 87 aa 5d 3c 6f 2e 84 cb 5a 42 39 a5 fe 50 48 0a 6e c6 6b 70 ab 5b 1f 4a c6 73 0c 6c 51 54 21 b3 27 ec 1d 69 40 2e 53 df b4 9a d7 38 1e b0 67 b3 38 fd 7b 0c b2 22 47 22 5d 47 |
|||
24
Ковычки
19.05.13
✎
16:37
|
а что надо ?
|
|||
25
Sintez123
20.05.13
✎
01:38
|
(24) вот такая вот строка должна получиться:
http://infostart.ru/upload/iblock/f21/hash3.PNG Обработку не я писал, я пытался её передалать под подпись. Эта обратка шифрует то правильно, но шифрует без ключа, мне только с ключем подойдет. То что я получил не похоже на строку с картинки. |
|||
26
Sintez123
20.05.13
✎
01:46
|
(24) вроде получил, нолик убрал и + " " убрал, вышло так:
b936cee86c9f87aa5d3c6f2e84cb5a4239a5fe5048a6ec66b70ab5b1f4ac673c6c515421b327ec1d69402e53dfb49ad7381eb067b338fd7bcb22247225d47 Большушее спасибо. Я вам может в личку напишу потом, если не справлюсь дальше. А то есть уже мысль передать это более опытному человеку за вознаграждение... Сейчас надо это всё веб-сервису передать, буду плясать с бубном... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |