/// <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)); } }
//======================================================================================================================== /// <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()); } }