首页 > 编程语言 >C# RSA2 SHA256 对应JAVA(SHA256withRSA)

C# RSA2 SHA256 对应JAVA(SHA256withRSA)

时间:2023-07-20 18:00:58浏览次数:45  
标签:SHA256withRSA params1 JAVA String C# sign Add key new

 

//用于高德调用商家,数据已经替换敏感数据,所以运行会验证失败
//请拿实际参数代入

private static String getSignContent(Dictionary<String, String> paramMap) { StringBuilder content = new StringBuilder(); List<String> keys = new List<string>(paramMap.Keys); // 将参数集合排序 //Collections.sort(); keys.Sort(); for (int i = 0; i < keys.Count; i++) { String key = keys[i]; //排除不需要参与签名的公共参数 if ("sign_type"==(key) || "sign" == (key) || "need_encrypt" == (key)) { continue; } String value = paramMap[key]; // 拼装所有非空参数 if ( !string.IsNullOrWhiteSpace(key) && !string.IsNullOrWhiteSpace(value) ) { content.Append(i == 0 ? "" : "&").Append(key).Append("=").Append(value); } } return content.ToString(); } public static void VerifyData() { Dictionary<String, String> params1 = new Dictionary<String, String>(); params1.Add("utc_timestamp", "1689818159186");//1 params1.Add("version", "1.0");//1 params1.Add("charset", "UTF-8");//1 params1.Add("sign_type", "RSA2");//1 params1.Add("method", "amap.brand.vip.getInfo");//1 params1.Add("sign", "lh+PBMhVxwdhNXsICd4u+JcMIZA6Gu1ly8cGuCijihs7oFtVcSBMAC6l2PSNPdniDRIjct8Tt+SzIHeNp0mFwZgjZMf1Q6JzZX6x2Ig/UnCl7IO4tMCUDJI6H/4GvEsYGNg+6CW/MgvwFrFlpij9aRs1uCDh8ghh68MW2GIwWjPR0VYEc1qOvb7Dx37RrirPDz44+PPl6T5WVcMCYMCgfhvK3lUrwAWMSA5GCdunZQ9hh6TiTHxv4bN5QK7C1zesUYs2NhsUXS4P52UdQ5L3zkiafQIoCfnT2Lf2ps/HTLd8jeyYX9Nreae3lyxBVl/wkhQim8Ez6Cqu7emq3TlAiA=="); //1 params1.Add("app_id", "保密,请从高德控制台获取");//1 params1.Add("biz_content", "{\"channel\":\"amap\",\"mobile\":\"18881341816\",\"requestId\":\"amap-168981815918497509168272711\",\"storeNo\":\"HHHL220008\",\"vipId\":\"\"}");//1 var sigeStr = getSignContent(params1); var publicKey = LoadPublicKey(@"C:\public.pem"); byte[] messageAsByte = Encoding.GetEncoding("UTF-8").GetBytes(sigeStr) ; byte[] sig256 = Convert.FromBase64String(params1["sign"]); var verify256 = publicKey.VerifyData(messageAsByte, CryptoConfig.MapNameToOID("SHA256"), sig256); //var verify512 = publicKey.VerifyData(messageAsByte, CryptoConfig.MapNameToOID("SHA512"), sig512); Console.WriteLine("Signature verify 256: " + verify256); //Console.WriteLine("Signature verify 512: " + verify512); Console.ReadKey(); } public static RSACryptoServiceProvider LoadPublicKey(String path) { System.IO.StreamReader fileStream = File.OpenText(path); PemReader pemReader = new PemReader(fileStream); AsymmetricKeyParameter KeyParameter = (AsymmetricKeyParameter)pemReader.ReadObject(); RSAParameters rsaParams = DotNetUtilities.ToRSAParameters((RsaKeyParameters)KeyParameter); RSACryptoServiceProvider csp = new RSACryptoServiceProvider();// cspParams); csp.ImportParameters(rsaParams); return csp; }
public.pem文件为 :

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlpYnE+cLvHzTgv5KE******************************iKG3gjXD2lMW0SARwzq1sV4+aMz3vhYnMdD9igfkJI4EXtJFsOmzfNezdmP7D9jSgkXcrVEDDEPnqMP+fRLFT01O4JCQyJ9u02fIcVpBEQShOVDZZtTYM/6lMOKpPYcHh93at++XhqJc19j8btw+UJOWvf9MajYsT5CAcHX0gJbGtbIepW9Lqr+XkCMzg3HHQ5ZLoHfkLqt7Z6/klN/D1oNMfKVpLzyktPBzFfO9nmeWq11DPeIYmFtp+CBFJ0uRDSrQAclZs178ZbyonYkIhlf628F1MEaOVkSW7t3WbJkb9MQb/xwIDAQAB
-----END PUBLIC KEY-----

 

参考链接:

https://stackoverflow.com/questions/59722926/fail-to-match-sha256withrsa-signature-from-java-on-net-c-sharp

标签:SHA256withRSA,params1,JAVA,String,C#,sign,Add,key,new
From: https://www.cnblogs.com/j2ee-web-01/p/17569194.html

相关文章

  • 请问为什么cmd中输入python显示no python at (python所在地址)?
    可能是由于您的Python安装路径不在系统的PATH环境变量中导致的。您可以尝试将Python的安装路径添加到PATH环境变量中,然后再次尝试在cmd中输入python。如果您已经将Python的安装路径添加到了PATH环境变量中,但仍然无法在cmd中输入python,那么可能是因为您的系统中存在多个版本的Pyt......
  • RF射频PCB板布局布线经验总结
    射频(RF)电路板设计由于在理论上还有很多不确定性,因此常被形容为一种“黑色艺术”,但这个观点只有部分正确,RF电路板设计也有许多可以遵循的准则和不应该被忽视的法则。 不过,在实际设计时,真正实用的技巧是当这些准则和法则因各种设计约束而无法准确地实施时如何对它们进行......
  • 前端(JavaScript)
    JavaScript一个完整的JavaScript实现是由以下3个不同部分组成的:核心(ECMAScript) ------------>基础语法---------->必须要会的文档对象模型(DOM)Documentobjectmodel(整合js,css,html)  ---------->重要浏览器对象模型(BOM)Broswerobjectmodel(整合js和浏览器)-------......
  • CF449D Jzzhu and Numbers
    有一个很蠢但是很好写的做法。就是你先令\(t_i\)为与起来恰好为\(i\)的方案数,然后\(g_i\)为与起来子集中有\(i\)的方案数。然后\(g_S=\sum\limits_{T\subseteqS}t_T\),反演一下变成\(t_{S}=\sum\limits_{T\subseteqS}(-1)^{|S|-|T|}g_{T}\)。注意到可以\(O(w)\)枚......
  • CF1062E Company
    对于一个询问\([l,r]\),假设\(\text{lca}(l,l+1,...,r)=u\)。如果删去了点\(x\),使得\(\text{lca}\)从\(u\)下移到了点\(v\),说明\(x\)一定在\(u\)的子树内并且不在\(v\)的子树内。这样顺序好像不太对,这样说吧:如果你想让答案从\(u\)变成\(v\),那么你需要尽可能选......
  • CF1083F The Fair Nut and Amusing Xor
    简要题意:给你两个序列\(a,b\),一次操作可以将\(a\)的某一个长度为\(k\)的子区间全部异或上任意值,\(f(a,b)\)为使得\(a\)和\(b\)相同的最少的操作数量。支持单点修改\(a,b\),并在开头和每次修改后输出\(f(a,b)\)的值。\(n,k,q\le2\times10^5,w\le2^{14}\)。题解......
  • CF1770F Koxia and Sequence
    题意给定非负整数\(n,x,y\),对于所有满足\(\sum\limits_{i=1}^{n}a_i=x\)并且\(\text{OR}_{i=1}^{n}a_i=y\)的\(\{a_n\}\),求\(\bigoplus\limits_{i=1}^{n}a_i\)的异或和。\(n\le2^{40},x\le2^{60},y\le2^{20}\)。题解首先根据对称性,当\(n\)为偶数时,答案为\(0\)。......
  • PCB封装下载网站推荐及其详细使用方法
    摘要本文汇总了当下比较流行的几个原理图符号,PCB封装与对应的3D模型下载网站,网站均支持多种流行的EDA软件,如AD,Cadence,PADS等。因为我使用的是Cadence,版本是16.6和17.4,对应的原理图工具是Orcad,PCB工具是Allegro,所以在使用网站时均以Cadence为示例。当下最流行......
  • exclude在python中
    Python中的exclude用法作为一名经验丰富的开发者,我将教会你如何在Python中使用"exclude"函数。首先,让我们了解一下整个过程的流程,并在下面的表格中列出每个步骤。步骤描述1导入所需的库2定义一个包含要排除元素的列表3使用列表推导式或filter()函数来排除元素......
  • docker把本地文件夹挂载到容器中
    如何将本地文件夹挂载到Docker容器中1.概述在使用Docker进行应用程序开发时,经常需要将本地文件夹挂载到Docker容器中,以便在容器中进行代码的调试和测试。本文将详细介绍如何完成这个过程,并提供每一步的示例代码和解释。2.操作步骤步骤操作1创建一个本地文件夹,用于......