public Client() { RsaHelper rsa = new RsaHelper(); PublicKey = rsa.PublicKey; _cryptor = new TransmissionEncryptor(rsa.PrivateKey, ServerPublicKey); }
/// <summary> /// 将收到的客户端请求进行解密 /// </summary> /// <param name="request">加密的请求</param> /// <returns>解密后的请求</returns> public async Task <HttpRequest> DecryptRequest(HttpRequest request) { if (_privateKey == null || request.Method == HttpMethod.Get.Method || request.Body == null) { return(request); } string publicKey = request.Headers.GetOrDefault(HttpHeaderNames.ClientPublicKey); if (publicKey != null) { //throw new OsharpException("在请求头中客户端公钥信息无法找到"); _encryptor = new TransmissionEncryptor(_privateKey, publicKey); } if (_encryptor == null) { return(request); } try { string data = await request.ReadAsStringAsync(); if (string.IsNullOrEmpty(data)) { return(request); } data = _encryptor.DecryptAndVerifyData(data); if (data == null) { throw new OsharpException("服务器解析请求数据时发生异常"); } await request.WriteBodyAsync(data); return(request); } catch (Exception ex) { _logger.LogError(ex is CryptographicException ? "服务器解析传输数据时发生异常。" : "服务器对请求数据进行解密处理时发生异常。", ex); throw new OsharpException("服务器对请求数据进行解密处理时发生异常。", ex); } }
public Server(string clientPublicKey) { _cryptor = new TransmissionEncryptor(ServerPrivateKey, clientPublicKey); }