私鑰長度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); }
--