Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
        /// <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);
        }