コード例 #1
0
ファイル: EncryHelp.cs プロジェクト: radtek/MyTaskControl
 /// <summary>
 /// 公钥验签
 /// </summary>
 /// <param name="pubCertFilePath"></param>
 /// <param name="encoding"></param>
 /// <param name="RspSign"></param>
 /// <param name="RspText"></param>
 /// <returns></returns>
 public static bool CAVerifySign(string pubCertFilePath, byte[] sign , byte[] rspbyte,HalgType halg)
 {
     //调用证书(公钥)            
     X509Certificate2 Cert = new X509Certificate2(pubCertFilePath);
     RSACryptoServiceProvider PublicKey = (RSACryptoServiceProvider)Cert.PublicKey.Key;
     RSACryptoServiceProvider publickey1 = new RSACryptoServiceProvider();
     publickey1.ImportParameters(PublicKey.ExportParameters(false));
     switch (halg)
     {
         case HalgType.MD5:
             return publickey1.VerifyData(rspbyte, new MD5CryptoServiceProvider(), sign);
         case HalgType.SHA1:
             return publickey1.VerifyData(rspbyte, new SHA1CryptoServiceProvider(), sign);
         case HalgType.SHA256:
             return publickey1.VerifyData(rspbyte, new SHA256CryptoServiceProvider(), sign);
         case HalgType.HmacSHA1:
             return publickey1.VerifyData(rspbyte, new HMACSHA1(), sign);
         case HalgType.HmacMD5:
             return publickey1.VerifyData(rspbyte, new HMACMD5(), sign);
         case HalgType.HamcSHA256:
             return publickey1.VerifyData(rspbyte, new HMACSHA256(), sign);
         default:
             return publickey1.VerifyData(rspbyte, new MD5CryptoServiceProvider(), sign);
     }
 }
コード例 #2
0
ファイル: EncryHelp.cs プロジェクト: radtek/MyTaskControl
        /// <summary>
        /// 私钥加签
        /// </summary>
        /// <param name="CertFilePath">证书完整路径</param>
        /// <param name="CertPass">证书密码</param>
        /// <param name="Text">待签名文本</param>
        /// <param name="encoding">编码规范</param>
        /// <returns></returns>
        public static string CACertSign(string priCertFilePath, string CertPass, string Text, Encoding encoding, HalgType halg)
        {
            //调用证书(私钥,需要密码)          
            X509Certificate2 privateCert = new X509Certificate2(priCertFilePath, CertPass, X509KeyStorageFlags.Exportable);

            RSACryptoServiceProvider privateKey = (RSACryptoServiceProvider)privateCert.PrivateKey;
            // 获取私钥 
            RSACryptoServiceProvider privateKey1 = new RSACryptoServiceProvider();
            privateKey1.ImportParameters(privateKey.ExportParameters(true));
            byte[] data = encoding.GetBytes(Text);
            byte[] signature = new byte[1024];
            switch (halg)
            {
                case HalgType.MD5:
                    signature = privateKey1.SignData(data, new MD5CryptoServiceProvider());
                    break;
                case HalgType.SHA1:
                    signature = privateKey1.SignData(data, new SHA1CryptoServiceProvider());
                    break;
                case HalgType.SHA256:
                    signature = privateKey1.SignData(data, new SHA256CryptoServiceProvider());
                    break;
                case HalgType.HmacSHA1:
                    signature = privateKey1.SignData(data, new HMACSHA1());
                    break;
                case HalgType.HmacMD5:
                    signature = privateKey1.SignData(data, new HMACMD5());
                    break;
                case HalgType.HamcSHA256:
                    signature = privateKey1.SignData(data, new HMACSHA256());
                    break;
                default:
                    signature = privateKey1.SignData(data, new MD5CryptoServiceProvider());
                    break;
            }
            //对签名密文进行Base64编码 
            return Convert.ToBase64String(signature);
        }