Example #1
0
        /// <summary>
        /// 验签
        /// </summary>
        /// <param name="content">待验签字符串</param>
        /// <param name="signedString">签名</param>
        /// <param name="publicKey">公钥</param>
        /// <returns>true(通过),false(不通过)</returns>
        public static bool Verify(string content, string signedString, string publicKey)
        {
            AsymmetricKeyParameter pubKey = RsaKeyHelper.loadPublicKey(publicKey);
            ISigner signer = SignerUtilities.GetSigner("SHA256withRSA"); //其他算法 如SHA1withRSA

            signer.Init(false, pubKey);
            var expectedSig = Convert.FromBase64String(signedString);
            var msgBytes    = Encoding.UTF8.GetBytes(content);

            signer.BlockUpdate(msgBytes, 0, msgBytes.Length);
            return(signer.VerifySignature(expectedSig));
        }
Example #2
0
 /// <summary>
 /// 公钥加密
 /// </summary>
 /// <param name="resData">需要加密的字符串</param>
 /// <param name="publicKey">公钥</param>
 /// <returns>明文</returns>
 public static string Encrypt(string resData, string publicKey)
 {
     try
     {
         AsymmetricKeyParameter pubKey = RsaKeyHelper.loadPublicKey(publicKey);
         IBufferedCipher        cipher = CipherUtilities.GetCipher("RSA/ECB/PKCS1Padding");
         cipher.Init(true, pubKey);//true表示加密
         var    data        = Encoding.UTF8.GetBytes(resData.Trim());
         byte[] encryptData = cipher.DoFinal(data);
         return(Convert.ToBase64String(encryptData));
     }
     catch (Exception)
     {
         throw new Exception("加密失败");
     }
 }
Example #3
0
 /// <summary>
 /// 公钥解密
 /// </summary>
 /// <param name="resData">加密字符串</param>
 /// <param name="publicKey">公钥</param>
 /// <returns>明文</returns>
 public static string DecryptByPublicKey(string resData, string publicKey)
 {
     try
     {
         AsymmetricKeyParameter pubKey = RsaKeyHelper.loadPublicKey(publicKey);
         IBufferedCipher        cipher = CipherUtilities.GetCipher("RSA/ECB/PKCS1Padding");
         cipher.Init(false, pubKey);//false表示解密
         var encryptData = Convert.FromBase64String(resData);
         var decryptData = cipher.DoFinal(encryptData);
         return(Encoding.UTF8.GetString(decryptData));
     }
     catch (Exception)
     {
         throw new Exception("解密失败");
     }
 }