Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 16.11.2011
Сообщений: 55

Cryptodome.Hash.SHA512

11.01.2020, 15:30. Показов 1245. Ответов 1

Студворк — интернет-сервис помощи студентам
Добрый всем день!
У меня вот какая проблема. Я создаю свой сайт, на Django, разрабатываю его на Виндах, потом готовый результат сбрасываю на рабочий сервер, расположенный на Ubuntu 18, сервер свой, настраивал сам. В качестве Питона использую версию 3.7, всю работу с Django организовал в своей виртуальной среде. Все настройки старался делать аналогично и на Виндах и на Линуксе, чтобы потом менее проблемно было переносить сайт из разработки в работу. Для сайта мне в какой-то момент понадобилась работа с шифрованием, для этого я подключил пакет Cryptodome. Из этого пакета я использовал функцию хеширования SHA512 и шифрования RSA. На Виндах я все сделал, работает нормально. Но при переносе рабочего кода на Линукс возникла проблема. Дело в том, что на Ubuntu 18 изначальная версия третьего Питона 3.6, и я так по умолчанию и оставил. А для работы установил питон 3.7 и соответствующее виртуальное окружение. Но сайт в продакшене в общем-то нормально работал, пока я не скинул туда код с импортом пакета Cryptodome.Hash.SHA512. После этого, когда я запускаю сайт на Ubuntu, возникает ошибка:

Cannot load native module 'Cryptodome.Hash._SHA512': Trying '_SHA512.cpython-36m-x86_64-linux-gnu.so': /var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/Cryptodome/Util/../Hash/_SHA512.cpython-36m-x86_64-linux-gnu.so: cannot open shared object file: No such file or directory, Trying '_SHA512.abi3.so': /var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/Cryptodome/Util/../Hash/_SHA512.abi3.so: cannot open shared object file: No such file or directory, Trying '_SHA512.so': /var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/Cryptodome/Util/../Hash/_SHA512.so: cannot open shared object file: No such file or directory

Как видно из текста ошибки, происходит попытка загрузить модуль "_SHA512.cpython-36m-x86_64-linux-gnu.so", которого разумеется нет, так как в пакете Cryptodome для питона 3.7 находиться модуль "_SHA512.cpython-37m-x86_64-linux-gnu.so", скомпилированный соответственно для работы именно с Питоном 3.7. Я не могу понять, почему он пытается загрузить модуль для другой версии питона? Пройдясь по коду, я нашел, что за загрузку библиотеки отвечает модуль "_raw_api.py" расположенный в "venv3.7\Lib\site-packages\Cryptodome\Util". В этом модуле, для установки нужного суфикса (cpython-36m-x86_64-linux-gnu.so или cp37-win32 или соответственно нужного мне cpython-37m-x86_64-linux-gnu.so) отвечает переменная "EXTENSION_SUFFIXES" из модуля importli.machinery каким-то образом инициализирующая там список суфиксов, который потом добавляется к имени модуля "_SHA512". И вот тут дальше я уже никуда пройти не могу, потому что работу модуля machinery мне никак не отследить, и по какому принципу он формирует список суфиксов, а точнее, почему он в этот список добавляет именно строку "cpython-36m-x86_64-linux-gnu", а не "cpython-37m-x86_64-linux-gnu", я понять никак не могу. Кстати, из этого же пакета Cryptodome модуль RSA он вроде как нормально импортирует, без ошибок. Но вот SHA512 никак не хочет импортировать. Может кто подскажет в чем проблема, или в какую еще сторону стоит копать, для поиска истины? Еще прошу Вас учитывать, что я далеко не профессионал в Линуксах, поэтому не очень ругайтесь, если я буду подтупливать по вопросам работы в Ubuntu.

Добавлено через 2 часа 2 минуты
Вот еще, нашел интересный лог сервера apache. Стало понятно, откуда берется префикс для Питона 3.6.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/django/core/handlers/wsgi.py", line 141, in __call__
response = self.get_response(request)
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/django/core/handlers/base.py", line 75, in get_response
response = self._middleware_chain(request)
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
response = response_for_exception(request, exc)
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/django/core/handlers/exception.py", line 128, in handle_uncaught_exception
callback, param_dict = resolver.resolve_error_handler(500)
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/django/urls/resolvers.py", line 597, in resolve_error_handler
callback = getattr(self.urlconf_module, 'handler%s' % view_type, None)
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/django/utils/functional.py", line 80, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/django/urls/resolvers.py", line 577, in urlconf_module
return import_module(self.urlconf_name)
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/var/pyprojects/MySite/MySite/urls.py", line 63, in <module>
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/django/urls/conf.py", line 34, in include
urlconf_module = import_module(urlconf_module)
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/var/pyprojects/MySite/test_polygon/urls.py", line 2, in <module>
from test_polygon.views import *
File "/var/pyprojects/MySite/test_polygon/views.py", line 1, in <module>
from Cryptodome.Hash import SHA512
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/Cryptodome/Hash/SHA512.py", line 48, in <module>
""")
File "/var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/Cryptodome/Util/_raw_api.py", line 299, in load_pycryptodome_raw_lib
raise OSError("Cannot load native module '%s': %s" % (name, ", ".join(attempts)))
OSError: Cannot load native module 'Cryptodome.Hash._SHA512': Trying '_SHA512.cpython-36m-x86_64-linux-gnu.so': /var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/Cryptodome/Util/../Hash/_SHA512.cpython-36m-x86_64-linux-gnu.so: cannot open shared object file: No such file or directory, Trying '_SHA512.abi3.so': /var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/Cryptodome/Util/../Hash/_SHA512.abi3.so: cannot open shared object file: No such file or directory, Trying '_SHA512.so': /var/pyprojects/venvs/venv3.7/lib/python3.7/site-packages/Cryptodome/Util/../Hash/_SHA512.so: cannot open shared object file: No such file or directory

Действительно модуль importlib почему-то импортируется из питона 3.6. Хотя, я пробовал на Линксе вручную открывать компилятор Питона 3.7, и тем же пакетом хешировать строки. Все работает, никаких ошибок. Но на сайте не дает даже произвести импорт Cryptodome.Hash.SHA512, сразу появляется ошибка.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.01.2020, 15:30
Ответы с готовыми решениями:

Hash пароль sha1
кто может поработать с hash пароль sha1

VK API saveWallPhoto error 121: Invalid hash
Доброго времени суток всем. Захотелось выложить фотографию на стену группы. Казалось бы читай маны и делай. Что получилось: ...

Ошибка vk_api.exceptions.ApiError: [121] Invalid hash
Короче, делаю програмку которая будет постить картинки в сообщество(с циклом for), но вот незадача, баг в апи(или как это можно назвать) не...

1
1 / 1 / 1
Регистрация: 16.11.2011
Сообщений: 55
13.01.2020, 08:15  [ТС]
Проблема решена, тема закрыта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2020, 08:15
Помогаю со студенческими работами здесь

Различие между Open Hash и Closed hash
В чём различие между Open Hash и Closed hash и какие у каждого из них преимущества и недостатки?

Чем distributed hash table отличается от обычного hash table?
Если в обычной хеш-таблице мы храним значения в условном массиве доступ к которым осуществляется с помощью ключа, то в распределенной...

SHA512
Добрый день) Ищу полуфабрикат данного алгоритма. Собсна нужно сгенерировать открытый и закрытый ключ, зашифровать с помошью открытого и...

Хеширование SHA512
У меня есть пароль, к нему добавляю соль и перец. Получается такая строка - соль+пароль+перец. Это дело хешируется с помощью SHA512. ...

HMAC-SHA512
Добрый день. Подскажите как захешировать строку через HMAC-SHA512 в D7? Поиск выдал много результатов, только почему-то ни нашло...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru