C# .NET 私鑰 RSA2,SHA256,簽名


私鑰長度2048

--

 

/// <summary>
             /// 生成簽名
             /// </summary>
             /// <param name="str">需簽名的數據</param>
             /// <param name="privateKey">私鑰</param>
             /// <param name="encoding">編碼格式 默認utf-8</param>
             /// <returns>簽名后的值</returns>
        public static string Signature(string str, string privateKey, string encoding)
        {
            //SHA256withRSA
            //根據需要加簽時的哈希算法轉化成對應的hash字符節
            //byte[] bt = Encoding.GetEncoding("utf-8").GetBytes(str);
            byte[] bt = Encoding.GetEncoding(encoding).GetBytes(str);
            var sha256 = new SHA256CryptoServiceProvider();
            byte[] rgbHash = sha256.ComputeHash(bt);

            RSACryptoServiceProvider key = new RSACryptoServiceProvider();
            key.FromXmlString(privateKey);
            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);
            formatter.SetHashAlgorithm("SHA256");//此處是你需要加簽的hash算法,需要和上邊你計算的hash值的算法一致,不然會報錯。
            byte[] inArray = formatter.CreateSignature(rgbHash);
            return Convert.ToBase64String(inArray);

        }

 

 

--


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM