| 
    
            
         
         | 
    
  | 
SHA256 для 8.3.3 | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Avily    
     23.12.13 
            ✎
    11:36 
 | 
         
        Добрый день, подскажите пожалуйста.
 
        Мне нужно зашифровать строку функцией SHA256. Нашла информацию, что в 8.3.3 это реализовано, но нигде нет примера кода. Помогите пожалуйста, как это написать?  | 
|||
| 
    1
    
        Леха Дум    
     23.12.13 
            ✎
    11:41 
 | 
         
        Без фотки тема не взлетит!     
         | 
|||
| 
    2
    
        Avily    
     23.12.13 
            ✎
    11:43 
 | 
         
        Поставила уже... :-)     
         | 
|||
| 
    3
    
        oleg_km    
     23.12.13 
            ✎
    11:45 
 | 
         
        В синтаксис-помощнике почитай ХешированиеДанных. Если будет непонятно - пиши.     
         | 
|||
| 
    4
    
        Avily    
     23.12.13 
            ✎
    11:46 
 | 
         
        не понятно, прочитала     
         | 
|||
| 
    5
    
        Avily    
     23.12.13 
            ✎
    11:47 
 | 
         
        ХешДанных=Новый ХешированиеДанных(SHA256(SHA256)) 
 
        а дальше как?  | 
|||
| 
    6
    
        oleg_km    
     23.12.13 
            ✎
    11:47 
 | 
         
        Что именно не понятно?     
         | 
|||
| 
    7
    
        Avily    
     23.12.13 
            ✎
    11:48 
 | 
         
        в какой момент передавать строку, которую я хочу хешировать     
         | 
|||
| 
    8
    
        Avily    
     23.12.13 
            ✎
    11:48 
 | 
         
        мб
 
        ХешДанных.Добавить(СтрокаДляХеширования);  | 
|||
| 
    9
    
        Avily    
     23.12.13 
            ✎
    11:50 
 | 
         
        мне бы просто пример кода с хешированием... а дальше я сама разберусь, ни разу не сталкивалась     
         | 
|||
| 
    10
    
        oleg_km    
     23.12.13 
            ✎
    11:52 
 | 
         
        Давайте по порядку. Зачем вам нужен хеш: вы его сами будете проверять или его будет проверять другое приложение? Просто от этого будет зависеть, подходит ли функция ХешДанных.Добавить(СтрокаДляХеширования);     
         | 
|||
| 
    11
    
        Avily    
     23.12.13 
            ✎
    11:56 
 | 
         
        мне нужно передать данные на сайт через WS-ссылку, там есть функция:
 
        Функция(Данные,Ключ) Данные - это строка (json) - ее я формирую программно Ключ - это то, что я должна получить при прогоне строки Данные через SHA256 Вот ключ мне и нужно получить  | 
|||
| 
    12
    
        Avily    
     23.12.13 
            ✎
    11:56 
 | 
         
        сайт будет обрабатывать эти Данные и сравнивать такой же у него получился Ключ или нет     
         | 
|||
| 
    13
    
        Avily    
     23.12.13 
            ✎
    11:58 
 | 
         
        у меня и на эту строку ругается:
 
        ХешДанных=Новый ХешированиеДанных(SHA256(SHA256)) не знаю как правильно указать тип функции в параметре  | 
|||
| 
    14
    
        Avily    
     23.12.13 
            ✎
    11:59 
 | 
         
        с этим разобралась:
 
        Х ешДанных=Новый ХешированиеДанных(ХешФункция.SHA256) ;  | 
|||
| 
    15
    
        Serginio1    
     23.12.13 
            ✎
    12:00 
 | 
         
        Хэш=Новый ХешированиеДанных(ХешФункция.SHA256);
 
        Хэш.Добавить("Тра ля ля"); Сообщить(Хэш.ХешСумма);  | 
|||
| 
    16
    
        Serginio1    
     23.12.13 
            ✎
    12:01 
 | 
         
        ХешСумма (HashSum)
 
        Использование: Только чтение. Описание: Тип: Число; ДвоичныеДанные. Содержит текущее значение хеш-суммы. Для функций MD5, SHA1 и SHA256 – значение типа ДвоичныеДанные, для функции CRC32 – Число.  | 
|||
| 
    17
    
        oleg_km    
     23.12.13 
            ✎
    12:02 
 | 
         
        (15) Проблема может быть в кодировке. Добавить воспринимает кодировку UTF8, а сайт? И в каком виде сайт ждет значение хеша?     
         | 
|||
| 
    18
    
        Avily    
     23.12.13 
            ✎
    12:04 
 | 
         
        строку ждет     
         | 
|||
| 
    19
    
        Avily    
     23.12.13 
            ✎
    12:04 
 | 
         
        а я двоичные данные получила, можно как то перевести?     
         | 
|||
| 
    20
    
        oleg_km    
     23.12.13 
            ✎
    12:13 
 | 
         
        Вроде как Строка(ДвоичныеДанные) сейчас как раз переводит байты в шестнадцатеричное представление. Только тебе наверное пробелы нужно выкинуть. В каком виде сайт ждет хеш, пример можешь кинуть?     
         | 
|||
| 
    21
    
        Avily    
     23.12.13 
            ✎
    12:14 
 | 
         
        94f6f771181eada99eecaa22228e5f261501b5a4466cec860dc0ffcb906b21c5     
         | 
|||
| 
    22
    
        Avily    
     23.12.13 
            ✎
    12:16 
 | 
         
        сделала Строка(ДвоичныеДанные) , он мне в точности такуюже строку получил как двоичные данные были     
         | 
|||
| 
    23
    
        oleg_km    
     23.12.13 
            ✎
    12:19 
 | 
         
        Полный свой код приведи     
         | 
|||
| 
    24
    
        Avily    
     23.12.13 
            ✎
    12:19 
 | 
         
        Функция ПолучитьКлючШифрования(Шифр)
 
        Хэш=Новый ХешированиеДанных(ХешФункция.SHA256); Хэш.Добавить(Шифр); Возврат Хэш.ХешСумма; КонецФункции  | 
|||
| 
    25
    
        Avily    
     23.12.13 
            ✎
    12:20 
 | 
         
        получаю 61 91 C7 36 3B D5 AB 88 08 BC 04 67 76 39 F2 B3 76 17 4D 23 FC 25 59 A1 7D 36 D4 0A 15 66 6B FF     
         | 
|||
| 
    26
    
        Avily    
     23.12.13 
            ✎
    12:20 
 | 
         
        а мне надо что-то типо 94f6f771181eada99eecaa22228e5f261501b5a4466cec860dc0ffcb906b21c5     
         | 
|||
| 
    27
    
        Serginio1    
     23.12.13 
            ✎
    12:22 
 | 
         
        Base64Строка или XmlСтрока     
         | 
|||
| 
    28
    
        Avily    
     23.12.13 
            ✎
    12:24 
 | 
         
        пробовала, они одно и то же возвращают и мне не подходит     
         | 
|||
| 
    29
    
        oleg_km    
     23.12.13 
            ✎
    12:26 
 | 
         
        Функция ПолучитьКлючШифрования(Шифр)
 
        Хэш=Новый ХешированиеДанных(ХешФункция.SHA256); Хэш.Добавить(Шифр); Возврат Хэш.ХешСумма; КонецФункции Функция Добавить воспринимает Шифр как набор байтов в кодировке UTF8, а сайт возможно считает, что строка Шифр должна быть в другой кодировке, например в ANSI. Нужно узнать, в какой кодировке разработчики сайта хешат строку Шифр.  | 
|||
| 
    30
    
        Serginio1    
     23.12.13 
            ✎
    12:27 
 | 
         
        Или
 
        ТипДвоичныеДанные = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "base64Binary"); ДвоичныеДанные = ФабрикаXDTO.Создать(ТипДвоичныеДанные,Хэш.ХешСумма); Возврат ДвоичныеДанные;  | 
|||
| 
    31
    
        Serginio1    
     23.12.13 
            ✎
    12:28 
 | 
         
        Или СериализаторXDTO.ЗаписатьXDTO(Хэш.ХешСумма)     
         | 
|||
| 
    32
    
        Serginio1    
     23.12.13 
            ✎
    12:30 
 | 
         
        Какой тип требует сайт? Что именно не подходит?     
         | 
|||
| 
    33
    
        Avily    
     23.12.13 
            ✎
    12:32 
 | 
         
        а как сделать, что бы он в ANSI воспринимал?     
         | 
|||
| 
    34
    
        Avily    
     23.12.13 
            ✎
    12:33 
 | 
         
        UTF8     
         | 
|||
| 
    35
    
        Avily    
     23.12.13 
            ✎
    12:34 
 | 
         
        уточнила, не нужно мне ANSI, все в UTF8     
         | 
|||
| 
    36
    
        oleg_km    
     23.12.13 
            ✎
    12:34 
 | 
         
        (33) Ты все таки попробуй выяснить, в какой кодировке считают хеш на сайте. 
 
        ЗаписьТекста указываешь нужную кодировку, тогда нужно использовать функцию ДобавитьФайл  | 
|||
| 
    37
    
        Avily    
     23.12.13 
            ✎
    12:36 
 | 
         
        я выяснила - UTF8     
         | 
|||
| 
    38
    
        oleg_km    
     23.12.13 
            ✎
    12:38 
 | 
         
        (35) Тогда странно. Но нужно не забывать, что хеш функция очень чувствительна к малейшим изменениям. Я например долго мучился с банк-клиентом, потому что они проверяли ЭЦП от строки с ВК+ПС в конце, а я их удалял. Может у тебя декорируется строка? Кинь сюда строку     
         | 
|||
| 
    39
    
        Avily    
     23.12.13 
            ✎
    12:41 
 | 
         
        94f6f771181eada99eecaa11118e5f261501b5a3311cec860dc0ffcb906b21c5cf5ffe752e93c87ea93b5a78d9088de9     
         | 
|||
| 
    40
    
        Avily    
     23.12.13 
            ✎
    12:42 
 | 
         
        сейчас пришлю что должно получиться     
         | 
|||
| 
    41
    
        Avily    
     23.12.13 
            ✎
    12:45 
 | 
         
        6191c7363bd5ab8808bc04677639f2b376174d23fc2559a17d36d40a15666bff     
         | 
|||
| 
    42
    
        Avily    
     23.12.13 
            ✎
    12:46 
 | 
         
        сейчас я получаю: 61 91 C7 36 3B D5 AB 88 08 BC 04 67 76 39 F2 B3 76 17 4D 23 FC 25 59 A1 7D 36 D4 0A 15 66 6B FF     
         | 
|||
| 
    43
    
        acsent    
     23.12.13 
            ✎
    12:48 
 | 
         
        пробелы убрать нужно?     
         | 
|||
| 
    44
    
        Avily    
     23.12.13 
            ✎
    12:49 
 | 
         
        ой блин точно, спасибо большое     
         | 
|||
| 
    45
    
        Avily    
     23.12.13 
            ✎
    12:49 
 | 
         
        смотрю на строчки и в упор не вижу что они одинаковые((     
         | 
|||
| 
    46
    
        Avily    
     23.12.13 
            ✎
    12:50 
 | 
         
        пора уже на новогодние праздники!!     
         | 
|||
| 
    47
    
        Avily    
     23.12.13 
            ✎
    12:50 
 | 
         
        Всех с наступающим!!!     
         | 
|||
| 
    48
    
        Serginio1    
     23.12.13 
            ✎
    12:56 
 | 
         
        (42) 
 
        ТипhexBinary = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "hexBinary"); ДвоичныеДанные = ФабрикаXDTO.Создать(ТипhexBinary,Хэш.ХешСумма); Сообщить(ДвоичныеДанные.ЛексическоеЗначение);  | 
|||
| 
    49
    
        oleg_km    
     23.12.13 
            ✎
    13:09 
 | 
         
        Такой вариант должен работать:
 
        Функция ПолучитьКлючШифрования(Шифр) Хэш=Новый ХешированиеДанных(ХешФункция.SHA256); Хэш.Добавить(Шифр); Возврат НРег(СтрЗаменить(Строка(Хэш.ХешСумма), " ", "")); КонецФункции Или как (48)  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |