zoukankan      html  css  js  c++  java
  • C#实现RSA签名及认证

    C#实现RSA签名及认证

    /// <summary>
    
    /// 签名
    
    /// </summary>
    
    /// <param name="str">需签名的数据</param>
    
    /// <returns>签名后的值</returns>
    
    public string Sign(string str, string str_privateKey) {
    //根据需要加签时的哈希算法转化成对应的hash字符节
    byte[] bt = Encoding.GetEncoding("utf-8").GetBytes(str);
    var sha256 = new SHA256CryptoServiceProvider();
    byte[] rgbHash = sha256.ComputeHash(bt);
    RSACryptoServiceProvider key = new RSACryptoServiceProvider();
    key.FromXmlString(str_privateKey);
    RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);
    formatter.SetHashAlgorithm("SHA256"); //此处是你需要加签的hash算法,需要和上边你计算的hash值的算法一致,不然会报错。
    byte[] inArray = formatter.CreateSignature(rgbHash);
    return Convert.ToBase64String(inArray);
    }
    
    /// <summary>
    /// 签名验证
    /// </summary>
    /// <param name="str">待验证的字符串</param>
    /// <param name="sign">加签之后的字符串</param>
    /// <returns>签名是否符合</returns>
    public bool SignCheck(string str, string sign, string str_publicKey){
    try{
    byte[] bt = Encoding.GetEncoding("utf-8").GetBytes(str);
    var sha256 = new SHA256CryptoServiceProvider();
    byte[] rgbHash = sha256.ComputeHash(bt);
    RSACryptoServiceProvider key = new RSACryptoServiceProvider();
    key.FromXmlString(str_publicKey);
    RSAPKCS1SignatureDeformatter deformatter = new RSAPKCS1SignatureDeformatter(key);
    deformatter.SetHashAlgorithm("SHA256");
    byte[] rgbSignature = Convert.FromBase64String(sign);
    if (deformatter.VerifySignature(rgbHash, rgbSignature)){
    return true;
    }
    return false;
    }
    catch{
    return false;
    }
    }
    
    
  • 相关阅读:
    关于类加载
    Java垃圾回收机制复习
    关于网络协议
    hadoop
    dubbo框架原理
    经典场景的设计方案整理
    报告撰写,linux使用gimp简单做gif动图
    《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11
    《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---10
    《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---07
  • 原文地址:https://www.cnblogs.com/grj001/p/12223874.html
Copyright © 2011-2022 走看看