/// <summary> /// 使用私钥签名 /// </summary> /// <param name="data">原始数据</param> /// <returns></returns> public string Sign(string data) { byte[] dataBytes = _encoding.GetBytes(data); var signatureBytes = _privateKeyRsaProvider.SignData(dataBytes, _hashAlgorithmName, RSASignaturePadding.Pkcs1); if (IsBase64) { return(Convert.ToBase64String(signatureBytes)); } else { return(HexByte.ByteToHexStr(signatureBytes)); } }
public RSA CreateRsaProviderFromPublicKey(string publicKeyString) { byte[] x509Key; if (!IsBase64) { //如果是十六进制,则将十六进制转为byte x509Key = HexByte.StrToToHexByte(publicKeyString); } else { //否则默认为base64 x509Key = Convert.FromBase64String(publicKeyString); } return(CreateRsaProvider.CreateRsaProviderFromPublicKey(x509Key)); }
public RSA CreateRsaProviderFromPrivateKey(string privateKey) { byte[] privateKeyBits; if (!IsBase64) { //如果是十六进制,则将十六进制转为byte privateKeyBits = HexByte.StrToToHexByte(privateKey); } else { //否则默认为base64 privateKeyBits = Convert.FromBase64String(privateKey); } return(CreateRsaProvider.CreateRsaProviderFromPrivateKey(privateKeyBits)); }
public string Encrypt(string text) { if (_publicKeyRsaProvider == null) { throw new ArgumentNullException("_publicKeyRsaProvider is null"); } byte[] textBits = _publicKeyRsaProvider.Encrypt(_encoding.GetBytes(text), RSAEncryptionPadding.Pkcs1); if (IsBase64) { return(Convert.ToBase64String(textBits)); } else { return(HexByte.ByteToHexStr(textBits)); } }
public string Decrypt(string cipherText) { if (_privateKeyRsaProvider == null) { throw new ArgumentNullException("_privateKeyRsaProvider is null"); } byte[] textBits; if (IsBase64) { textBits = Convert.FromBase64String(cipherText); } else { textBits = HexByte.StrToToHexByte(cipherText); } return(_encoding.GetString(_privateKeyRsaProvider.Decrypt(textBits, RSAEncryptionPadding.Pkcs1))); }
/// <summary> /// 使用公钥验证签名 /// </summary> /// <param name="data">原始数据</param> /// <param name="sign">签名</param> /// <returns></returns> public bool Verify(string data, string sign) { byte[] dataBytes = _encoding.GetBytes(data); byte[] signBytes; if (IsBase64) { signBytes = Convert.FromBase64String(sign); } else { signBytes = HexByte.StrToToHexByte(sign); } var verify = _publicKeyRsaProvider.VerifyData(dataBytes, signBytes, _hashAlgorithmName, RSASignaturePadding.Pkcs1); return(verify); }