Встроенный веб-сервер в.NET

1115 Решение было не таким простым, как мне показалось на первый взгляд.

Для начала вам нужно понять, что содержимое переменных PrivateKey и PublicKey - это не просто чистый ключ, закодированный в Base64, это объект protobuf, сериализованный в ByteArray, а затем закодированный в Base64. Чтобы получить ключ от него, вам сначала нужно получить схему этого объекта, которая доступна по ссылке .

Мы сохраняем этот файл и следуем инструкциям на этой странице . Короче говоря, я выполнил команду protoc --python_out=. crypto.proto для создания модуля Python под названием crypto_pb2.py.

Все приготовления завершены, и теперь перейдите к коду:

import crypto_pb2
import base64

publicKey = "CAASpgIwgE ... jkupAgMBAAE="
privateKey = "CAASqQkwgg ... Xmzva/Km7A=="

Сначала необходимо декодировать строку base64 в байтовый массив:

decoded = base64.b64decode(publicKey) 

Эта функция десериализует массив байт в знакомый объект Python protobuf, я взял его из этого ответа и немного изменил:

def deserialize(byte_message, proto_type):
    module_, class_ = proto_type.rsplit('.', 1)
    class_ = getattr(crypto_pb2, class_) # crypto_pb2 is a name of module we recently created and imported
    rv = class_()
    rv.ParseFromString(byte_message) # use .SerializeToString() to reverse operation
    return rv

Далее мы вызываем функцию, передаем декодированный base64 и имя класса которому он соответствует (PublicKey для publicKey и PrivateKey для privateKey), меня интересует свойство Data.

publicKey = deserialize(decoded, 'crypto.pb.PublicKey').Data

Теперь вы можете передать его в функцию import_key как ByteArray. Не выполняйте дополнительных преобразований.

key = Crypto.PublicKey.RSA.import_key(publicKey)
crypter = Crypto.Cipher.PKCS1_OAEPPKCS1_OAEP.new(key)
encryptedData = crypter.encrypt(data.encode())
result = base64.b64encode(encryptedData).decode()

8
задан hakre 13 November 2011 в 14:57
поделиться

3 ответа

HttpListener класса .NET выставляет базовый http.sys, на котором создается IIS. Все машины начиная с Windows XP2 имеют http.sys, установленный по умолчанию. Вот некоторые ссылки для запущения Вас.

СЕРВЕР XML-RPC ИСПОЛЬЗУЯ HTTPLISTENER

HttpListener для макетов

Что касается поддержки PHP, я не знаю, как Вы включили бы это, но нет никакой технической причины, в которой Вы не могли создать ее.

9
ответ дан 5 December 2019 в 10:45
поделиться

Я посмотрел бы на подобных XAMPP, Облегченному, который Вы могли легко запустить и завершить работу со своим приложением.

Существует также AppWeb, который утверждает, что был точно, что Вы ищете.

5
ответ дан 5 December 2019 в 10:45
поделиться

Можно всегда использовать PHP в качестве приложения CGI. CGI хорошо документируется и AFAIK довольно легкий реализовать. Используйте предложение Darrel Millers и свяжите его с некоторым волшебством CGI, и необходимо готовить с газом.

2
ответ дан 5 December 2019 в 10:45
поделиться