zoukankan      html  css  js  c++  java
  • RSA签名验证

            /// <summary>
            /// 验证签名
            /// </summary>
            /// <param name="content">待签名字符串</param>
            /// <param name="signedString">POST过来的签名</param>
            /// <param name="publicKey">公钥</param>
            /// <param name="input_charset">编码格式</param>
            /// <returns></returns>
            public static bool verify(string content, string signedString, string publicKey, string input_charset)
            {
                bool result = false;
                try
                {
                    Encoding code = Encoding.GetEncoding(input_charset);
                    byte[] Data = code.GetBytes(content);
                    byte[] data = Convert.FromBase64String(signedString);
                    RSAParameters paraPub = ConvertFromPublicKey(publicKey);
                    RSACryptoServiceProvider rsaPub = new RSACryptoServiceProvider();
                    rsaPub.ImportParameters(paraPub);
    
                    SHA1 sh = new SHA1CryptoServiceProvider();
                    result = rsaPub.VerifyData(Data, sh, data); 
                    return result;
                }
                catch (Exception ex)
                {  
                    return false;
                }
            }
    
       #region 解析.net 生成的Pem
            private static RSAParameters ConvertFromPublicKey(string pemFileConent)
            {
    
                byte[] keyData = Convert.FromBase64String(pemFileConent);
                if (keyData.Length < 162)
                {
                    throw new ArgumentException("pem file content is incorrect.");
                }
                byte[] pemModulus = new byte[128];
                byte[] pemPublicExponent = new byte[3];
                Array.Copy(keyData, 29, pemModulus, 0, 128);
                Array.Copy(keyData, 159, pemPublicExponent, 0, 3);
                RSAParameters para = new RSAParameters();
                para.Modulus = pemModulus;
                para.Exponent = pemPublicExponent;
                return para;
            }
  • 相关阅读:
    Python基础-博客
    已开发程序查询
    新语法
    html基础
    python操作excel
    Selenium
    练习2---(request,ajax爬取头条数据)
    练习1---request+正则(猫眼电影)
    框架---scrapy(基本用法)
    框架---Scrapy (框架安装)
  • 原文地址:https://www.cnblogs.com/hnsongbiao/p/8436563.html
Copyright © 2011-2022 走看看