栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

C#开发记录

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#开发记录

文章目录
  • 一、获取一个类指定的属性值
  • 二、退款响应固定字段
  • 三、将参数排序组装
  • 四、MD5加签
  • 五、MD5withRSA


一、获取一个类指定的属性值

代码如下:

        /// 
        /// 获取一个类指定的属性值
        /// 
        /// object对象
        /// 属性名称
        /// 
        public static object GetPropertyValue(object info, string field)
        {
            if (info == null) return null;
            Type t = info.GetType();
            IEnumerable property = from pi in t.GetProperties() where pi.Name.ToLower() == field.ToLower() select pi;
            return property.First().GetValue(info, null);
        }
二、退款响应固定字段

代码如下:

        /// 
        /// 获取实体类固定字段
        /// 
        /// 
        /// 
        private static Object Deserialize_Data(object obj)
        {
            dynamic param = new ExpandoObject();
            param.mer_order_no = GetPropertyValue(obj, "field1");
            param.mer_refund_no = GetPropertyValue(obj, "field2");
            param.refund_state = GetPropertyValue(obj, "field3");
            param.nonce_str = GetPropertyValue(obj, "field4");

            return param;
        }
三、将参数排序组装

代码如下:

 /// 
        /// 将参数排序组装
        /// 
        /// 
        /// 
        /// 
        private string BuildParamStr(SortedDictionary param, string key)
        {
            if (param == null || param.Count == 0)
            {
                return "";
            }
            param.Remove("sign");
            SortedDictionary ascDic = new SortedDictionary();
            foreach (KeyValuePair item in param)
            {
                ascDic.Add(item.Key, item.Value);
            }
            StringBuilder sb = new StringBuilder();
            foreach (var item in ascDic)
            {
                if (!string.IsNullOrEmpty(item.Value))
                {
                    sb.Append(item.Key).Append("=").Append(item.Value).Append("&");
                }
            }
            sb.Append("key=" + key);

            return sb.ToString();
        }
四、MD5加签

代码如下:

        /// 
        /// md5加签
        /// 
        /// 
        /// 
        public static string MD5Encrypt(string strText)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] result = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strText));
            return BitConverter.ToString(result).Replace("-", "").ToLower();
        }
五、MD5withRSA

代码如下:

using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Security;
using System;
using System.Collections.Generic;
using System.Text;

namespace Tools
{
    class CryptoUtil
    {
        public static Encoding encoding = Encoding.UTF8;
        public static string SignerSymbol = "MD5withRSA";

        private static AsymmetricKeyParameter CreateKEY(bool isPrivate, string key)
        {
            byte[] keyInfoByte = Convert.FromBase64String(key);

            if (isPrivate)
                return PrivateKeyFactory.CreateKey(keyInfoByte);
            else
                return PublicKeyFactory.CreateKey(keyInfoByte);
        }

        public static string Sign(string content, string privatekey)
        {
            ISigner sig = SignerUtilities.GetSigner(SignerSymbol);

            sig.Init(true, CreateKEY(true, privatekey));

            var bytes = encoding.GetBytes(content);

            sig.BlockUpdate(bytes, 0, bytes.Length);
            byte[] signature = sig.GenerateSignature();


            
            var signedString = Convert.ToBase64String(signature);

            return signedString;
        }

        public static bool Verify(string content, string signData, string publickey)
        {
            ISigner signer = SignerUtilities.GetSigner(SignerSymbol);

            signer.Init(false, CreateKEY(false, publickey));

            var expectedSig = Convert.FromBase64String(signData);

            
            var msgBytes = encoding.GetBytes(content);

            
            signer.BlockUpdate(msgBytes, 0, msgBytes.Length);
            return signer.VerifySignature(expectedSig);
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/830706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号