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 ответов

35 просмотров

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.

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта