用C# 实现标准MD5WithRSA算法

   看到网上 很多用C#  实现MD5WithRSA算法,都是使用的 证书,通过加载证书 和证书密码加密。

  但是实际中,我们也有通过 密钥加密的情况,如是找了很久 终于找到方法,首先要下载一个 BouncyCastle.Crypto.dll 。

   话不多说,贴代码:

   

  public class md5withRsa
    {
        public static Encoding encoding = Encoding.GetEncoding("GBK");
        public static string SignerSymbol = "MD5withRSA";

        public  md5withRsa() { }

        public  md5withRsa(Encoding e, string s)
        {
            encoding = e; SignerSymbol = s; } private static AsymmetricKeyParameter CreateKEY(bool isPrivate, string key) { byte[] keyInfoByte = Convert.FromBase64String(key); if (isPrivate) return PrivateKeyFactory.CreateKey(keyInfoByte); else return PublicKeyFactory.CreateKey(keyInfoByte); } /// <summary> /// 数据加密 /// </summary> /// <param name="content">待加密字符串</param> /// <param name="privatekey">私钥</param> /// <returns>加密后字符串</returns> public static string Sign(string content, string privatekey) { ISigner sig = SignerUtilities.GetSigner(SignerSymbol); sig.Init(true, CreateKEY(true, privatekey)); var bytes = encoding.GetBytes(content); sig.BlockUpdate(bytes, 0, bytes.Length); byte[] signature = sig.GenerateSignature(); /* Base 64 encode the sig so its 8-bit clean */ var signedString = Convert.ToBase64String(signature); return signedString; } /// <summary> /// 验证签名 /// </summary> /// <param name="content">待签名的字符串</param> /// <param name="signData">加密后的文本</param> /// <param name="publickey">公钥文本</param> /// <returns>是否一致</returns> public static bool Verify(string content, string signData, string publickey) { ISigner signer = SignerUtilities.GetSigner(SignerSymbol); signer.Init(false, CreateKEY(false, publickey)); var expectedSig = Convert.FromBase64String(signData); /* Get the bytes to be signed from the string */ var msgBytes = encoding.GetBytes(content); /* Calculate the signature and see if it matches */ signer.BlockUpdate(msgBytes, 0, msgBytes.Length); return signer.VerifySignature(expectedSig); } }

      这样,我们 通过 Sign()  方法加密,通过Verify()方法验证签名即可。

这里提供一组数据给大家验证:

私钥:MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAJMr8NnRV7ve7Y5FEBium/TsU0fK5NvzvFpsYxPAQhBXY+EN0Bi2JEg790C1njk9Q3U36u2JBDHAiDIomlgh6wWkJsFn7dghV/fCWSX1VVJ+dRINZy1432fRaJ8GqspvMneBpeLjBe94IwlWKpN+AOR+BNX8QL/uHmfCPlVQXos9AgMBAAECgYAzqbMs434m50UBMmFKKNF6kxNRGnpodBFktLO7FTybu/HF6TFp21a1PMe5IYhfk5AAsBZ6OCUOygWFhhdYZN+5W+dweF3kp1rLE4y5CjwqNlk/g22TAndf9znh/ltHFLvITToqu/eh/34tE1gyNxRbsi1olw/1wv8ZRjM3vtM9QQJBANvNwFq+CJHUyFzkXQB7+ycQFnY8wDq8Uw2Hv9ZMjgIntH7FSlJtdu5mAYPPo6f74slO5tFUMNP7EVppqsjYaNkCQQCraD6iKHo+OIlvvYIKiMXatJGD7N1GNhq5CrhUNPWLHwv/Ih2D3JJdF8IUZOPIJfUxTfM2fZYI+EVdsv6s4RcFAkAGjNYbnighOGcUJZYD6q3sVxVkRqEv3ubWs2HrH/Lna4l8caKqXCq8JfwLkod8/QugFiLYwBqIZqX4vMdjHtfZAkBsAl9dbWZCaPvpxp/4JWGPxDLhz9NLV/KU4bVvkoObq++yUHwKyGYOdVcd5MlIKOsNq5Hzp0Vw14lWVuF2bMxFAkBuNrZksvUULNIaWDKd4rQ6GVzUxXuIZW0ZE6atHYDiXPB4jVAjKRtLxZAV1qH9cr1zNJlcg+RbGYUdF9t4A9n5
公钥:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTK/DZ0Ve73u2ORRAYrpv07FNHyuTb87xabGMTwEIQV2PhDdAYtiRIO/dAtZ45PUN1N+rtiQQxwIgyKJpYIesFpCbBZ+3YIVf3wlkl9VVSfnUSDWcteN9n0WifBqrKbzJ3gaXi4wXveCMJViqTfgDkfgTV/EC/7h5nwj5VUF6LPQIDAQAB
"中国China"
签名结果:YrzYdPFG0yomJFcM4RbO7WCyrn3LgYpG52f0TVbj1palYwD1y7YI+VJJ+G4xfTvtaXZ7cWCAbTH8j/8WwGUjyJpG5vDkKJzkD8JR1YADaAGMsL43Weeeovj+FjDHt/vLtkJ8cHnJAxAgIilFCENf9X8XlMGbvH2tJ0mYhZat55U=

 还有一个可以在线进行 md5withRsa 加密验签的网站:www.yunsos.com/Md5WithRSA.aspx  可以在线验证。

 希望能够帮到大家!

转载于:https://www.cnblogs.com/yunsos/p/9040915.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值