/// <summary> /// RSA签名 /// </summary> /// <param name="rsaType"></param> /// <param name="privateKey"></param> /// <param name="data"></param> /// <param name="dataEncoding"></param> /// <returns></returns> public static string RsaSign(ERsaType rsaType, string privateKey, string data, Encoding dataEncoding) { byte[] dataBytes = dataEncoding.GetBytes(data); var algorithm = rsaType == ERsaType.RSA ? HashAlgorithmName.SHA1 : HashAlgorithmName.SHA256; var rsa = CreateRsaFromPrivateKey(privateKey); if (rsa == null) { return(null); } var signBytes = rsa.SignData(dataBytes, algorithm, RSASignaturePadding.Pkcs1); return(Convert.ToBase64String(signBytes)); }
/// <summary> /// RSA验证签名 /// </summary> /// <param name="rsaType"></param> /// <param name="publicKey"></param> /// <param name="data"></param> /// <param name="dataEncoding"></param> /// <param name="sign"></param> /// <returns></returns> public static bool RsaVerify(ERsaType rsaType, string publicKey, string data, Encoding dataEncoding, string sign) { byte[] dataBytes = dataEncoding.GetBytes(data); byte[] signBytes = Convert.FromBase64String(sign); var algorithm = rsaType == ERsaType.RSA ? HashAlgorithmName.SHA1 : HashAlgorithmName.SHA256; var rsa = CreateRsaFromPublicKey(publicKey); if (rsa == null) { return(false); } var verify = rsa.VerifyData(dataBytes, signBytes, algorithm, RSASignaturePadding.Pkcs1); return(verify); }