首页 > 编程语言 >C#版本的sha256withRSA 私钥加密 方法

C#版本的sha256withRSA 私钥加密 方法

时间:2024-06-21 17:54:25浏览次数:11  
标签:sha256withRSA Convert 私钥 string C# ToBase64String ToByteArrayUnsigned var privat

public static string Sign(string contentForSign, string privateKey)
{
	//转换成适用于.Net的秘钥
	var netKey = RSAPrivateKeyJava2DotNet(privateKey);
	var rsa = new RSACryptoServiceProvider();
	rsa.FromXmlString(netKey);
	//创建一个空对象
	var rsaClear = new RSACryptoServiceProvider();
	var paras = rsa.ExportParameters(true);
	rsaClear.ImportParameters(paras);
	//签名返回
	using (var sha256 = new SHA256CryptoServiceProvider())
	{
		var signData = rsa.SignData(Encoding.UTF8.GetBytes(contentForSign), sha256);
		//return BytesToHex(signData);
		return Convert.ToBase64String(signData);
	}
}
public static string RSAPrivateKeyJava2DotNet(string privateKey)
{
	RsaPrivateCrtKeyParameters privateKeyParam = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(privateKey));

	return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",
		Convert.ToBase64String(privateKeyParam.Modulus.ToByteArrayUnsigned()),
		Convert.ToBase64String(privateKeyParam.PublicExponent.ToByteArrayUnsigned()),
		Convert.ToBase64String(privateKeyParam.P.ToByteArrayUnsigned()),
		Convert.ToBase64String(privateKeyParam.Q.ToByteArrayUnsigned()),
		Convert.ToBase64String(privateKeyParam.DP.ToByteArrayUnsigned()),
		Convert.ToBase64String(privateKeyParam.DQ.ToByteArrayUnsigned()),
		Convert.ToBase64String(privateKeyParam.QInv.ToByteArrayUnsigned()),
		Convert.ToBase64String(privateKeyParam.Exponent.ToByteArrayUnsigned()));
}

  

 

标签:sha256withRSA,Convert,私钥,string,C#,ToBase64String,ToByteArrayUnsigned,var,privat
From: https://www.cnblogs.com/dj258/p/18261075

相关文章

  • UE5笔记-实现Lumen实时渲染GI下的的类UCanvasRenderTarget实现多场景/自定义分辨率/方
    默认的SceneCapture不能用于实时Lumen光照模式下为了实现实时渲染GI下的的类似于UCanvasRenderTarget2D类.可以参考GameViewport类的源码尝试使用UE的渲染逻辑和数据多渲染一份视口副本到直接的FSceneView上,封装一份UCaptureRenderTarget出来从而实现一些例如自定义分辨率的......
  • SpringCloud部分依赖(能够对应的依赖)
    1.父依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.5.RELEASE</version>......
  • C/C++ 缓冲区溢出问题总结
    缓冲区溢出(BufferOverflow)是一种常见的安全漏洞,它发生在当程序试图将更多的数据放入一个固定大小的内存区域(即缓冲区)时,超过了该区域所能容纳的数据量。这可能导致未定义的行为,包括数据损坏、程序崩溃,甚至更糟糕的是,攻击者可以利用这种漏洞执行恶意代码。一、缓冲区溢出概述缓冲......
  • 迁移与备份、Dockerfile、docker 私有仓库
    【迁移与备份】1#1镜像从哪来的?21dockerpull拉的,远程仓库--》国内镜像站342通过容器打包成镜像5-centos镜像运行成容器---》装了vim6-把装了vim的容器---》打包成镜像7-以后拿到这个镜像--》再运行成容器,都会带......
  • C++ 面向对象高级开发 4、参数传递与返回值
    consructor构造函数:被放在private区ctors放在private区classA{public:staticA&getInsance();    setup(){...};private:A();    A(constA&rhs);};A&A::getInstance(){staticAa;    returna;}A::getInsance().s......
  • 【报错】IllegalStateException: The remote endpoint was in state [TEXT_FULL_WRITI
    一、报错内容java.lang.IllegalStateException:Theremoteendpointwasinstate[TEXT_FULL_WRITING]whichisaninvalidstateforcalledmethod atorg.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.checkState(WsRemoteEndpointImplBase.java:1234) a......
  • 计算理论导论(cheat sheet)
    pumpinglemma:如果\(A\)是正则语言,那么存在一个整数\(p\),如果\(s\inA\)的长度\(\gep\),那么\(s\)可以被切分成3段\(s=xyz\)满足:(1)\(xy^iz\inA\);(2)\(|y|>0\);(3)\(|xy|\lep\)。(证明:\(A\)是正则语言,根据正则语言的定义说明存在DFA接受\(A\),设\(p=|Q|+1\),任......
  • PDFFactory&FinePrint中文版安装包下载及安装教程
    ​由此可知嵌入字体:确保文档中使用的原始字体能被正确显示,即使计算机中没有相应的字体。从总体上来看修复了导致快速连续打印多个文档时导致打印作业失败的错误。很明显修复了有时导致PDF文件中缺少文本的错误。值得一提的是拖放:轻松与Evernote,Gmail和其他基于云的功能集成。......
  • Facebook代投 | Facebook广告投放策略与优化Facebook广告成效的技巧方式
    点燃你的广告投放策略:掌握Facebook广告优化的绝技在当今数字营销的大潮中,Facebook广告无疑是企业推广和品牌建设的不可或缺的利器。然而,想要在这个竞争激烈的市场中脱颖而出,关键在于掌握精准的投放策略和优化成效的技巧。让我们一起探索,如何通过巧妙的方法提升你的广告效果,吸......
  • 8-用户交互Scanner
    Scanner对象我们可以通过Scanner类来获取用户的输入java.util.Scanner基本语法Scanners=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。//输入......