Beispiel #1
0
 /// <summary>
 /// 使用指定公钥验证解密得到的明文是否符合签名
 /// </summary>
 /// <param name="source">解密得到的明文</param>
 /// <param name="signData">明文签名字符串</param>
 /// <param name="publicKey">公钥</param>
 /// <param name="isSignForSoft">true=软签,false=硬签</param>
 /// <returns></returns>
 public static bool Verify(string source, string signData, string publicKey, bool isSignForSoft = true)
 {
     source = BytesAndStringExtensions.byteToHex(Encoding.UTF8.GetBytes(source));
     if (isSignForSoft)
     {
         return(SMCrypto.SM2SignVerUtils.verifySM2Signature(publicKey, source, signData));
     }
     else
     {
         return(SMCrypto.SM2SignVerUtils.verifySM2SignatureHard(publicKey, source, signData));
     }
 }
Beispiel #2
0
        //========================================================================================================================
        /// <summary>
        /// 使用指定密钥对明文进行签名,返回明文签名的字符串
        /// </summary>
        /// <param name="source">要签名的明文字符串</param>
        /// <param name="privateKey">私钥</param>
        /// <param name="isSignForSoft">true=软签,false=硬签</param>
        /// <returns></returns>
        public static string Sm2Sign(string source, string privateKey, bool isSignForSoft = true)
        {
            source = BytesAndStringExtensions.byteToHex(Encoding.UTF8.GetBytes(source));
            var sign = SMCrypto.SM2SignVerUtils.genSM2Signature(privateKey, source);

            if (isSignForSoft)
            {
                return(sign.getSm2_signForSoft());
            }
            else
            {
                return(sign.getSm2_signForHard());
            }
        }