Доступ к функции из DLL с помощью PythonC#

Место общения программистов C#
Ответить
Гость
 Доступ к функции из DLL с помощью Python

Сообщение Гость »


У меня есть программа шифрования RSA, написанная на C#. Это работает следующим образом:
[*]Расшифровывает открытый ключ с помощью DLL. [*]Шифрование данных с помощью специальной функции шифрования с использованием открытого ключа.
Эти зашифрованные данные затем передаются в API, который возвращает файл в качестве данных формы.

Я хочу добиться той же функциональности с помощью Python.

Но я застрял на этапе, на котором мне нужно получить доступ к функции из файла DLL, которая используется для расшифровки данных.

Это код на C#, который используется для расшифровки открытого ключа:

публичная строка GetPassPublicKey (строчный режим) { строка PublicKey = ""; строка FilePassword = «abcdef»; строка FilePath = "D:\PublicKey.zip"; пытаться { if (FilePassword != "" && FilePath != "") { используя (FileStream zipFile = File.Open(FilePath, FileMode.Open)) { используя (Архивный архив = новый архив (zipFile, новый ArchiveLoadOptions() {DecryptionPassword = FilePassword })) { используя (var поток = archive.Entries[0].Open()) используя (var Reader = новый StreamReader(поток)) { PublicKey = Reader.ReadToEnd(); PublicKey = Security.EncryptDecrypt.Decrypt(PublicKey); } } } } еще { } } поймать (Исключение ex) { Публичный Ключ = ""; } вернуть PublicKey; Я пытался использовать Python следующим образом:

def decrypt_public_key(encrypted_key): пытаться: # Загрузите Security.dll security_dll = ctypes.WinDLL(r"D:\Security.dll") # Определите сигнатуру функции для расшифровки security_dll.EncryptDecrypt_Decrypt = security_dll.EncryptDecrypt.Decrypt() Security_dll.EncryptDecrypt_Decrypt.argtypes = [ctypes.c_char_p] Security_dll.EncryptDecrypt_Decrypt.restype = ctypes.c_char_p защита расшифровки (содержание): # Вызовите Decrypt с входной строкой decrypted_key = security_dll.EncryptDecrypt_Decrypt(content.encode('utf-8')) вернуть decrypted_key.decode('utf-8') return decrypt(encrypted_key) # Вызовите здесь функцию дешифрования кроме исключения, как например: print(f"Во время расшифровки произошла ошибка: {str(ex)}") возвращаться "" Но все, что я получаю, это Произошла ошибка во время расшифровки: функция EncryptDecrypt не найдена

Я пытался использовать dumpbin, чтобы понять функции DLL, но безуспешно, а у команды, которая использовала эту DLL в своем коде на C#, нет документации по ней.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»