/// <summary> /// 签名 /// </summary> /// <param name="content">待签名字符串</param> /// <param name="privateKey">私钥</param> /// <returns>签名后字符串</returns> public static string Sign(string content, string privateKey) { AsymmetricKeyParameter priKey = RsaKeyHelper.loadPrivateKeyPk1(privateKey); ISigner sig = SignerUtilities.GetSigner("SHA256withRSA"); //其他算法 如SHA1withRSA sig.Init(true, priKey); var bytes = Encoding.UTF8.GetBytes(content); sig.BlockUpdate(bytes, 0, bytes.Length); byte[] signature = sig.GenerateSignature(); var signedString = Convert.ToBase64String(signature); return(signedString); }
/// <summary> /// 私钥解密 /// </summary> /// <param name="resData">加密字符串</param> /// <param name="privateKey">私钥</param> /// <param name="input_charset">编码格式</param> /// <returns>明文</returns> public static string Decrypt(string resData, string privateKey) { try { AsymmetricKeyParameter priKey = RsaKeyHelper.loadPrivateKeyPk1(privateKey); IBufferedCipher cipher = CipherUtilities.GetCipher("RSA/ECB/PKCS1Padding"); cipher.Init(false, priKey);//false表示解密 var encryptData = Convert.FromBase64String(resData); var decryptData = cipher.DoFinal(encryptData); return(Encoding.UTF8.GetString(decryptData)); } catch (Exception) { throw new Exception("解密失败"); } }
/// <summary> /// 私钥加密 /// </summary> /// <param name="resData">需要加密的字符串</param> /// <param name="privateKey">私钥</param> /// <returns>明文</returns> public static string EncryptByPrivateKey(string resData, string privateKey) { try { AsymmetricKeyParameter priKey = RsaKeyHelper.loadPrivateKeyPk1(privateKey); IBufferedCipher cipher = CipherUtilities.GetCipher("RSA/ECB/PKCS1Padding"); cipher.Init(true, priKey);//true表示加密 var data = Encoding.UTF8.GetBytes(resData.Trim()); byte[] encryptData = cipher.DoFinal(data); return(Convert.ToBase64String(encryptData)); } catch (Exception) { throw new Exception("加密失败"); } }