zoukankan      html  css  js  c++  java
  • c#RSA 私钥加签公钥解签

    /// RSA签名
    /// </summary>
    /// <param name="data">待签名数据</param>
    /// <param name="privateKeyJava"></param>
    /// <returns></returns>
    public static string RSASignBouncyCastle(string data, string privateKeyJava)
    {
    RsaKeyParameters privateKeyParam = (RsaKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(privateKeyJava));
    ISigner signer = SignerUtilities.GetSigner("SHA1WithRSA");
    signer.Init(true, privateKeyParam);//参数为true加签,参数为false验签
    var dataByte = Encoding.GetEncoding("UTF-8").GetBytes(data);
    signer.BlockUpdate(dataByte, 0, dataByte.Length);
    // return Encoding.GetEncoding("UTF-8").GetString(signer.GenerateSignature()); //签名结果 非Base64String
    return Convert.ToBase64String(signer.GenerateSignature());
    }
    /// <summary>
    /// 验签
    /// </summary>
    /// <param name="data">源数据</param>
    /// <param name="publicKey"></param>
    /// <param name="signature">base64签名</param>
    /// <returns></returns>
    public static bool VerifyBouncyCastle(string data, string publicKey, string signature)
    {
    RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKey));
    ISigner signer = SignerUtilities.GetSigner("SHA1WithRSA");
    signer.Init(false, publicKeyParam);
    byte[] dataByte = Encoding.GetEncoding("UTF-8").GetBytes(data);
    signer.BlockUpdate(dataByte, 0, dataByte.Length);
    //byte[] signatureByte = Encoding.GetEncoding(encoding).GetBytes(signature);// 非Base64String
    byte[] signatureByte = Convert.FromBase64String(signature);
    return signer.VerifySignature(signatureByte);
    }

    -------------------------------------------

    学而不思则罔,思而不学则殆

    你好,我是【咬轮猫】

    -------------------------------------------

  • 相关阅读:
    如何向Android模拟器打电话发短信
    APK文件安装模拟器和ADB命令的使用
    android的个人代码总结
    android一些基础知识
    android常用的一些属性说明
    新的博客
    用字符进行布尔值判断,踩到的一个小坑
    通过outlook的web邮箱获取指定邮件内容的邮件
    使用win32com接口获取outlook收件箱的内容
    Python 详解命令行解析
  • 原文地址:https://www.cnblogs.com/Hero-/p/9370021.html
Copyright © 2011-2022 走看看