using Dscf.Bpl.InformationAuditBpl;
using Dscf.Bpl.ProductBpl;
using Dscf.Global.CommonAduit;
using Dscf.Global.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using LitJson;
using Dscf.Client.InformationAuditWeb.App_Start;
using System.Configuration;
using System.Web.SessionState;
using Dscf.Bpl.UserBpl;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.Text;
using Org.BouncyCastle.Crypto.Encodings;
using Org.BouncyCastle.Crypto.Engines;
namespace Dscf.Client.InformationAuditWeb.Handler
{
    /// <summary>
    /// ZhiChengHandler 的摘要说明
    /// </summary>
    public class ZhiChengHandler : IHttpHandler, IReadOnlySessionState, IRequiresSessionState
    {
        public void ProcessRequest(HttpContext context)
        {
            string type = context.Request["type"];
            context.Response.ContentType = "text/plain";
            switch (type)
            {
                case "0"://查询显示
                    {
                        context.Response.Write(getUserinfo(context));
                        break;
                    }
                case "1"://借款显示
                    {
                        context.Response.Write(Loadselect(context));
                        break;
                    }
            }
        }
        /// <summary>
        /// 查询人员身份信息
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public UserInfoModel getUserInfoModel(UserInfoModel model)
        {
            UserInfoModel userinfo = new UserInfoModel();
            try
            {
                userinfo = UserInfoBpl.QueryObject(model);
                return userinfo;
            }
            catch (Exception ex)
            {
            }
            return userinfo;
        }
        /// <summary>
        /// 返回结果
        /// </summary>
        /// <param name="url"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static string ResponseBind(string url, IDictionary<string, string> parameters)
        {
            SecurityUtils su = new SecurityUtils();//给值
            string strReturn = su.ReturnActionFromXml(url, parameters);
            //JObject jo = (JObject)JsonConvert.DeserializeObject(strReturn);
            //string responsestr = jo["response"] != null ? jo["response"].ToString().Trim() : "";//执行结果
            //JObject jo2 = (JObject)JsonConvert.DeserializeObject(responsestr);
            //return jo2;
            return strReturn;
        }
        /// <summary>
        /// 获取个人信息
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ResultMessage getUserinfo(HttpContext context)
        {
            try
            {
                int orderId;
                if (int.TryParse(context.Request["Userid"], out orderId))
                {
                    UserInfoModel userinfo = new UserInfoModel();
                    userinfo.UserId = Convert.ToInt32(context.Request["Userid"]);
                    userinfo = getUserInfoModel(userinfo);
                    if (userinfo != null)
                    {
                        return new ResultMessage(true, "成功", userinfo);
                    }
                    else
                    {
                        return new ResultMessage(false, "失败");
                    }
                }
                else
                {
                    return new ResultMessage(false, "暂无数据!");
                }
            }
            catch (Exception ex)
            {
                return new ResultMessage(false, ex.Message);
            }
        }
        /// <summary>
        ///   借款查询
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ResultMessage Loadselect(HttpContext context)
        {
            try
            {
                int orderId;
                if (int.TryParse(context.Request["Userid"], out orderId))
                {
                    UserInfoModel userinfo = new UserInfoModel();
                    userinfo.UserId = Convert.ToInt32(context.Request["Userid"]);
                    userinfo = getUserInfoModel(userinfo);
                    if (userinfo != null)
                    {
                        //读取文件
                        using (var fileStream = System.IO.File.OpenText(context.Server.MapPath("/attached/publickey/ZC_PublicKey_V2.pem")))
                        {
                            var pemReader = new Org.BouncyCastle.OpenSsl.PemReader(fileStream);
                            var keyParameter = (Org.BouncyCastle.Crypto.AsymmetricKeyParameter)pemReader.ReadObject();
                            //userid
                            string input = "dingsheng_testusr";
                            byte[] testData = Encoding.UTF8.GetBytes(input);
                            var decryptEngine = new Pkcs1Encoding(new RsaEngine());
                            decryptEngine.Init(true, keyParameter);
                            input = Convert.ToBase64String(decryptEngine.ProcessBlock(testData, 0, testData.Length));
                            //params
                            ZhichengLoanSerachModel ZhichengLoanSerachModel = new ZhichengLoanSerachModel();
                            ZhichengLoanSerachModel.name = userinfo.Name;
                            ZhichengLoanSerachModel.idType = "101";
                            ZhichengLoanSerachModel.idNo = userinfo.IDCard;
                            ZhichengLoanSerachModel.queryReason = "10";
                            //把对象序列化成json
                            SerializerHelper serializer = new SerializerHelper();
                            string param = JsonConvert.SerializeObject(ZhichengLoanSerachModel);
                            testData = Encoding.UTF8.GetBytes(param);
                            testData = new RC4Crypto().EncryptEx(testData, "bd3fe9f1bf134f50");
                            param = Convert.ToBase64String(testData);
                            IDictionary<string, string> parameters = new Dictionary<string, string>();
                            parameters.Add("userid", HttpUtility.UrlEncode(input));
                            parameters.Add("params", HttpUtility.UrlEncode(param));
                            //解析请求结果
                            SecurityUtils su = new SecurityUtils();
                            string _creditUrl = "http://www.zhichengcredit.com/CreditPortal/api/queryLoan/V2";
                            string result = su.ReturnActionFromXml(_creditUrl, parameters);
                            JObject jo = JObject.Parse(result);
                            String data = jo["data"].ToString();
                            var resultStr = new RC4Crypto().Decrypt(data, "bd3fe9f1bf134f50", CryptoBase.EncoderMode.Base64Encoder);
                            string json = HttpUtility.UrlDecode(resultStr);
                            var model = JsonConvert.DeserializeObject<ZhichengLoanSeachResultModel>(json);
                    
                            return new ResultMessage(true, "成功", model);
                        }
                        // return new ResultMessage(true, "成功", userinfo);
                    }
                    else
                    {
                        return new ResultMessage(false, "失败");
                    }
                }
                else
                {
                    return new ResultMessage(false, "暂无数据!");
                }
            }
            catch (Exception ex)
            {
                return new ResultMessage(false, ex.Message);
            }
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

C# 操作pem 文件的更多相关文章

  1. Java Keytools 证书转换成Openssl 的PEM 文件或keytools 导出私钥文件

    上一遍又说到Godaddy 生请证书流程与操作: 现因使用Incapsula 防护使用到https,在添加网站时需要自定义证书,其中需要上传私钥信息,因公钥是能过keytool 生成所以需要导出私钥信 ...

  2. iOS推送证书生成pem文件(详细步骤)

    1.pem文件概述 pem文件是服务器向苹果服务器做推送时候需要的文件,主要是给php向苹果服务器验证时使用,下面介绍一下pem文件的生成. 2.生成pem文件步骤 1.打开钥匙串,选择需要生成的推送 ...

  3. PEM文件和private.key文件生成IIS服务器所需的pfx文件(配置SSL用)

    第一步:输入域名,点击"创建免费的SSL证书"按钮,如图 第二步:输入邮箱,点击创建,如图 创建成功后,需要进行dns验证,结果图如下: 第三步:在域名所在的云服务器上,添加域名解 ...

  4. 【Azure Developer - 密钥保管库 】使用 Python Azure SDK 实现从 Azure Key Vault Certificate 中下载证书(PEM文件)

    问题描述 在Azure Key Vault中,我们可以从Azure门户中下载证书PEM文件到本地. 可以通过OpenSSL把PFX文件转换到PEM文件.然后用TXT方式查看内容,操作步骤如下图: Op ...

  5. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  6. iOS推送证书转pem文件

    iOS推送证书转 .pem文件. 推送证书转pem文件openssl x509 -in apns_miaobozhibo.cer -inform der -out apns_miaobozhibo.p ...

  7. php多线程操作同一文件-待续

    同意文件操作同意文件的问题在于逻辑有些地方不合适,如果多个线程同时写入,在不加锁的情况下,可能导致得到结果不如意,为了安全,和脏读(数据库的词),应该使用排他锁,这就意味着每次只能被一个线程操作.其他 ...

  8. Java生成和操作Excel文件(转载)

    Java生成和操作Excel文件   JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...

  9. 实战p12文件转pem文件

    1.首先生成一个ssl的证书 选择app IDS 后实现下面这个(这里不详细说明怎么生成了) 点击Download按钮,我就下载Development的ssl证书,下载成功后,双击运行,会打开钥匙串程 ...

随机推荐

  1. Modbus工业协议在Android中的应用

    现在工业信息画发展,很多工厂都需要做信息化展示,通常都是利用Android一体机来进行展示和交互. Modbus协议是全球第一个用于工业现场的总线协议,与外设交互可以采用串口通信,tcp等方式:通常在 ...

  2. 地图和定位 、 iCloud

    1 FindMe应用 1.1 问题 MapKit框架可以用于创建现场交互的地图来显示用户想要设备显示的任何位置,包括用户的当前位置,甚至可以进行标记并查看地图上的标注信息.CoreLocation框架 ...

  3. 由STL所想到的 C++显示调用析构函数

    在STL中的容器中的析构函数中,会经常调用destroy()这个函数 在STL中  destroy()被重载了 这点在这里到不去讨论 这里贴最简单的那个版本 template<class T&g ...

  4. 根据 url请求数据

    public static JSONObject getJsonFromUrl(String url){ CloseableHttpClient httpClient = HttpClients.cr ...

  5. 2016HUAS_ACM暑假集训2L - Points on Cycle(圆上的点)

    一个简单的几何题,自己在纸上列出方程解出结果的表达式,再用程序表达出来就行了. 不过老司机(老司机的woodcoding)说用旋转向量法比较简单,有时间要去看一看. 大致题意:一个圆心在原点的圆,半径 ...

  6. [原创]cocos2d-x研习录-第二阶 概念类之摄相机类(CCCamera)

    在Cocos2D-x中,每个CCNode都拥有一个摄像机类CCCamera.只有通过CCCamera,CCNode才会被渲染出来.当CCNode发生缩放.旋转和位置变化时,都需要覆盖CCCamera, ...

  7. C#委拖小例子

    委托具有以下属性: 委托类似于 C++ 函数指针,但它们是类型安全的. 委托允许将方法作为参数进行传递. 委托可用于定义回调方法. 委托可以链接在一起:例如,可以对一个事件调用多个方法. 方法不必与委 ...

  8. EDIUS手绘遮罩功能如何用

    学了这么久的EDIUS视频编辑软件,你们学的怎么样了呢?你们知道EIDUS手绘遮罩的用法么,会熟练地使用它么?如果你们还没有学到这一知识点的话也不要着急,因为你们看完下面这篇文章就会明白了.事不宜迟, ...

  9. [WCF]设置拦截器捕捉到request和reply消息

    WCF进阶学习ing... 在熟练掌握了ABC的使用以后,就开始想着去了解WCF是怎么通信的了.首先是服务描述语言wsdl,它定义了服务的描述等等,用于让外界知道这个服务的ABC是什么.另外一个比较重 ...

  10. js合并行

    网上找了好久才找到,在这记录下. <script type="text/javascript" > function MergerRow(ID) { var tab = ...