80
Рейтинг

1div0



  •   Регистрация: 30.10.2020 (3 года назад)

  •   Был(а) на сайте: 05.03.2022

Подписчики 3

Группы

Профессиональный разработчик

Рейтинг 80

Подпись данных алгоритмами SHA + AES собственным модулем

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m) Внешняя обработка (ert,epf) Защита ПО и шифрование

Реализация подписи данных ключом длиной 256 бит алгоритмами SHA-256 + AES-256 без использования внешних компонент, zip-файлов, обращения к диску или БД и без привязки к ОС.

2 стартмани

01.11.2020    9426    10    1div0    9       

28

Быстрый алгоритм шифрования AES ECB 128/192/256

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m) Внешняя обработка (ert,epf) Защита ПО и шифрование

Реализация существенно оптимизированного алгоритма симметричного шифрования AES (Advanced Encryption Standard) в режиме ECB (Electronic codebook) с различной длиной ключа 128/192/256 без использования внешних компонент, zip-файлов, обращения к диску или БД и без привязки к ОС.

1 стартмани

30.10.2020    14930    76    1div0    50       

52

Комментарии

UpdateCFПроблемы при обновлении 1С: Комплексная автоматизация до версии 2.5.7.226#12 03.12.21 7:44
(11) Спасибо за подробное описание.

Подскажите ещё такой момент пожалуйста - а у Вас какие-то ещё подсистемы, кроме адресного хранения используются? Просто странно, что у вас места хранения на первом месте. Про них упомянули, но при этом не сказали ни одной проблемы, связанной со взаиморасчётами (которые вытекают из новой сущности "Объект расчётов"), со ставками НДС, обнулением сумм НДС и всякое также важное другое.
UpdateCFПроблемы при обновлении 1С: Комплексная автоматизация до версии 2.5.7.226#10 29.11.21 13:37
(9) Вообще "мёртвая" версия. Обновлять не рекомендую. Если только начинаете, может быть оно и взлетит.
UpdateCFПроблемы при обновлении 1С: Комплексная автоматизация до версии 2.5.7.226#8 14.11.21 11:38
Правильное решение - откатить релиз.
UpdateCFПроблемы при обновлении 1С: Комплексная автоматизация до версии 2.5.7.226#6 09.11.21 13:26
(2) Добрый день. Ничего не пропущено. Всё типовое. Последняя версия конфигурации была 2.4.13.281
UpdateCFПроблемы при обновлении 1С: Комплексная автоматизация до версии 2.5.7.226#1 09.11.21 5:36

Версия 2.5.7.226 типовой конфигурации "Комплексная автоматизация" содержит очень много изменений. Если вы ещё не переходили на неё и у вас большая база - имеет смысл подождать.

Мы же при предварительном тестировании выявили только одну ошибку в коде обновления и с утра обновили рабочую базу и компания перешла в аварийный режим работы.

При предварительном тестировании выявлена следующая ошибка - один из постобработчиков вызывал исключение с описанием:

Цитата
Ошибка выполнения обработчика обновления Документы.СверкаВзаиморасчетов.ОбработатьДанныеДляПереходаНаНовуюВерсию:
Открытая внутри обработчика обновления транзакция осталась активной (не была закрыта или отменена).

Для правки лучше сразу создать расширение и в него добавлять исправления. Указанная ошибка исправляется добавлением в модуль менеджера документа "Сверка взаиморасчётов" в процедуру "ОбработатьДанныеДляПереходаНаНовуюВерсию" между строкой 6865 и 6866 текста: "ЗафиксироватьТранзакцию();"

Код
// . . .
Если Не ГотовКЗаполнению Тогда
    ЗафиксироватьТранзакцию(); // <-- добавить это
    Продолжить;
КонецЕсли;
// . . .


Структура многих документов изменилась, поэтому могут быть проблемы с данными во время постобработки. Постобработчиков в этом обновлении много - 454 штуки. Что-то потребуется вписать групповой обработкой, что-то разовой обработкой. Это к сожалению индивидуально. Например, сущность НДС заменена на другую. Если какой-то элемент справочника не перезаписывается по какой-либо причине - может быть достаточно перезаписать значение одной сущности НДС на то же значение новой сущности.

При успешном выполнении всех постобработчиков нормальная работа пользователей в системе так и не началась.

1.
С мест сообщают: Документы по управленческому учету не попадают в акт сверки и в сводную ведомость.
Мой комментарий: Действительно есть проведённые документы, но теперь их нет в ведомости расчётов. Пока неясно как исправлять.

2.
С мест сообщают: Прошу решить этот вопрос, т. к. управленческий учет не виден. Все данные пропали по конец 3 кв. 2021 (расчеты видны только с 01.10.2021).
Мой комментарий: Возможно постобработка коснулась только документов открытого периода. Пока неясно как исправлять.

3.
С мест сообщают: Тормозит 1С. Вал обращений про взаимоблокировки.
Мой комментарий: На самом деле происходит зависание процедуры расчёта графика платежей при проведении документа. Процедура держит транзакцию, отсюда блокировки. Находится это в общем модуле "ОперативныеВзаиморасчетыСервер", процедура "ЗаполнитьОперативныеВзаиморасчеты". Зависает она в цикле (стр. 281):
Код
Пока Индексы.ИндексОплаты + Индексы.ИндексОтгрузкиПоставки < ЗаписейОбработать Цикл


Пока не придумал ничего лучше, как подсовывать в отладчике нужные данные, чтобы цикл завершался.

Итого
Уверен, что не я один столкнулся с подобной проблемой. Пожалуйста напишите, кто с чем столкнулся и как вы выкручивались.

Прикрепленные файлы:

Результат обновления программы.png
DevБыстрый алгоритм шифрования AES ECB 128/192/256#48 03.09.21 11:07
(46) Как я выяснил, некоторые сайты выполняют подготовку данных по-своему (по-сути - неправильно). Вот пример правильной шифровки текста на PHP:

Код
<?php

$string="test string";

// Функция "openssl_encrypt" - она по умолчанию не забивает блок нулями до конца. Поэтому делаем это сами.
// Помним, что нам нужна не строка, а бинарные данные.
if (strlen($string) % 16) {
    $string = str_pad($string, strlen($string) + 16 - strlen($string) % 16, "\0");
}

$method="AES-256-ECB";
$pass="pass123";

// Что делает функция "hash"?
// Вот по ней документация: https://www.php.net/manual/ru/function.hash.php
// Она отдаёт бинарные данные, только если указан третий параметр как Истина, по умолчанию он - Ложь.
// "При false выводит данные в шестнадцатеричной кодировке в нижнем регистре." - то есть возвращает СТРОКУ.
// Поэтому третий параметр должен быть = Истина.
$keyBin = hash('sha256', $pass, true);
echo("encrypt KEY ".bin2hex($keyBin)."<br />\n");

// Смотрим, что делает openssl_encrypt: https://www.php.net/manual/ru/function.openssl-encrypt.php
// Шифрует данные с заданным шифром и ключом и возвращает необработанную строку, либо строку кодированную в base64.
// Видимо необработанная строка при опции OPENSSL_RAW_DATA и base64 - в остальных случаях.
// Давайте получим двоичные данные.
$encrypt=openssl_encrypt($string, $method, $keyBin, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);
if (!$encrypt) {
echo("Что-то пошло не так...");
return;
}

// Выводим результат, преобразовав двоичные данные в HEX-строку:
$res = bin2hex($encrypt);
echo("encrypt HEX ".$res."<br />\n");

?>


Результат будет таким:
Код
encrypt KEY 9B8769A4A742959A2D0298C36FB70623F2DFACDA8436237DF08D8DFD5B37374C
encrypt HEX A16B6E242BC2F8D5E1ECA6B3161B108D


..что точно соответствует результату работы обработки.
DevБыстрый алгоритм шифрования AES ECB 128/192/256#47 31.08.21 4:24
Значит входные данные не одинаковые. Что является входной строкой на этом сайте? Вы пользовались формой обработки или непосредственно процедурами модуля? В общем, скорее всего, вам нужно проверить форматы входных данных: на сайте это строки, в обработке - бинарные данные.
Если с формы пробовали - то там шифруется не самим паролем, а его sha1, если я правильно помню. Нужно посмотреть, что с паролем сайт делает и сделать в обработке так же. Тогда результат совпадёт.
DevБыстрый алгоритм шифрования AES ECB 128/192/256#44 25.08.21 15:25
(40) Скорее всего ни в каких. Для создания этой обработки была создана ещё одна, в которой и происходила предварительная инициализация. Далее результат инициализации сохранён в виде константы - фиксированный кэш. При запуске шифровки/расшифровки переменные взводятся в нужные значения сразу из этого кэша. Для большинства пользователей не требуется менять вектор инициализации - он во всех исходниках один и тот же. Лучше действительно "подсаливать" или иным образом воздействовать на входные данные.входные данные. Замену вектора же нужно производить и у отправителя и получателя. Поэтому у вас будет некая константа, которую можно использовать не для вектора, а для входных данных - например зашифровать этим вектором, а результат ещё раз зашифровать ключом. Типа такого..
DevБыстрый алгоритм шифрования AES ECB 128/192/256#43 25.08.21 15:16
32 блока - это 1 килобайт. 256 бит = 32 байта, 32 байта * 32 блока = 1024 байта.
10-20 МБ - за раз, да, будет шифровать несколько часов.
DevПодпись данных алгоритмами SHA + AES собственным модулем#9 17.02.21 18:10
(8) Данная реализация получает такой же результат, как и другие его реализации на онлайн-ресурсах, например этом.

Верхняя обработка - это то что нужно: AES_ESB_v2.1, содержит функции подписи и проверки подписи, и быструю реализацию алгоритма AES.

Вторая обработка - ненужное дополнение, я её написал специально для статьи. Может быть кому-то понадобится или будет интересно. Вот тоже можно скачать.

Про соль и прочее - к сказанному выше мне нечего дополнить.