170 похожих чатов

Вот ф-ция хеширования, может быть в ней какой-то косяк? требуется

алгоритм "Стрибог"

import gostcrypto # https://pypi.org/project/gostcrypto/

def get_hash(s: str) -> str:
encoded = s.encode('cp1251')
hash_obj = gostcrypto.gosthash.new('streebog256', data=encoded)
return hash_obj.hexdigest()

26 ответов

13 просмотров

cp1251 косяк

Сергей- Автор вопроса
Сергей
в смысле?

В прямом. Эта кодировка поддерживает очень небольшой набор символов

Сергей- Автор вопроса
Tishka17
В прямом. Эта кодировка поддерживает очень небольш...

но там и есть только русские буквы и цифры

Драконить кодировки на каждый шорох — это конечно офигенно эффективно. И выбор кодировки тоже внушает, прямо повеяло госконторой. Это у заказчика шиза или твоё творчество?

Сергей- Автор вопроса
evle
Драконить кодировки на каждый шорох — это конечно ...

драконить в смысле менять? мб правда эффективнее будет заранее у всего файла поменять? а так в ТЗ указано что Стрибог работает именно с такой..

Сергей
драконить в смысле менять? мб правда эффективнее б...

А чтение твоего файла с n строк скок занимает?

Сергей- Автор вопроса
Konstantin Peskov
А чтение твоего файла с n строк скок занимает?

не считал, но я говорю, при замене стрибога на тождественный get_hash тоже оч быстро работает, так что ты был прав

Сергей
драконить в смысле менять? мб правда эффективнее б...

Стрибог работает с потоком байтов (которые ты и получаешь). В каком виде там будет текст — вопрос отдельный. Ты что-то к ТЗ от себя пытаешься сочинять. Исходный файл в какой кодировке?

Сергей- Автор вопроса
Tishka17
Стрибог работает с байтами же, не?

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

Сергей
то есть переводить никуда не нужно, если там рус б...

Э... Давай ты сходишь почитать о том, что такое кодировки и как с ними работать. А то наблюдается чистый лист в ответственном месте...

Сергей- Автор вопроса

да, понял что я не так говорю. я же читаю строку из csv, а нужно передать стрибогу байты. так что в вызове encode не может быть узкого места, этот вызов неизбежен, верно?

Сергей
да, понял что я не так говорю. я же читаю строку и...

Может. Если тебе нужны будут байты, ты можешь забить на преобразования в строку и читать в бинарном режиме. Единственное, не помню, как csv к этому отнесётся. Ну и плюс смена кодировки с utf-8 на cp1251 (фиг пойми, обоснованная ли). В любом случае, есть варианты.

Сергей- Автор вопроса
evle
Может. Если тебе нужны будут байты, ты можешь заби...

на самом деле чтение из файла это тестовое, в основном будет читаться из БД. в этом случае вызов s.encode('cp1251') ведь неизбежен, верно?

Сергей- Автор вопроса

почему?)

Сергей
почему?)

Средства шифрования сертифицируется. Рано или поздно заказчик либо сам об этом вспомнит, либо ему намекнут.

Сергей- Автор вопроса

не очень понял мысль, ну ладно.. я о том есть ли более простой вызов для строки. похоже что нет. тогда единств способ ускорить видимо правда распараллеливание (если будут требовать)

Сергей- Автор вопроса
Tishka17
Лучше делать по тз тогда

в тз указан Стрибог и что он работает с 1251. в этом его вызове ведь нет явных косяков с учетом этих требований? https://t.me/ru_python/2167263

Сергей
в тз указан Стрибог и что он работает с 1251. в эт...

Сложно искать косяки когда мы видим 3 строки текста

Сергей- Автор вопроса
Tishka17
Где указано?

"в виде хэш-кода, вычисляемого в соответствии с межгосударственным стандартом ГОСТ 34.11-2018 «Информационная технология. Криптографическая защита информации. Функция хэширования». Длина хэш кода – 256 бит. Кодировка информации, подлежащей хэшированию – Windows-1251"

Сергей
не очень понял мысль, ну ладно.. я о том есть ли б...

ГОСТовское шифрование как правило требуется всяким связанным с госструктурами заказчиками. При этом есть нормативка, говорящая о том, что используемые в таких случаях средства шифрования должны быть сертифицированы. Иначе они потом проверку не пройдут. Может, конечно, и глаза в итоге закроют, но если нормально проверять будут — нет. Та библиотека, которую ты показал — не сертифицирована, поэтому весьма вероятно, что придётся менять на какой-нибудь криптопро или ещё что подобное. Их несколько и в основном они на базе openssl.

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Any electron dev here?
Sayanth Tezro
12
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Карта сайта