.net Core 下使用 X509Certificate2 给报文加签
2024-08-29 06:02:16
起因
项目开发中途出现需求需要对接其他公司接口,使用证书进行认证传输,之前在.Net下搞过但是都是对方给我证书
这次需要我生成公钥/私钥,公钥给他这样操作。
生成私钥/公钥(这里是RSA算法,长度规定是2048)
我使用的是jdk-11.0.2
//生成私钥
//此行命令解释为:将使用RSA算法生成2048位的公钥/私钥对及整数,密钥长度为2048位,SHA256withRSA使用的算法, 证书有效期为385天。使用的密钥库为mykeystore1文件,别名为privatekey(后面可以直接用这个别名来代表mykeystore1文件)。
keytool -genkey -alias privatekey -keyalg RSA -keysize -sigalg SHA256withRSA -keystore mykeystore1 -validity //生成证书
keytool -export -alias privatekey -keystore mykeystore1 -file mykeystore1.cer //生成公钥
keytool -import -alias pulbiccert -file mykeystore1.cer -keystore publicmykeystore1 -storepass
代码部分
//调用证书
X509Certificate2 privateCert = new X509Certificate2(Path.Combine(System.AppContext.BaseDirectory, "mykeystore1"), "", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
//获取私钥的Key
#if NET452
RSACryptoServiceProvider privateKey = (RSACryptoServiceProvider)privateCert.PrivateKey;
RSACryptoServiceProvider privateKey1 = new RSACryptoServiceProvider();
privateKey1.ImportParameters(privateKey.ExportParameters(true));
#else
var privateKey = privateCert.GetRSAPrivateKey().ExportParameters(true);
#endif
//这里的content是我需要签名的数据
byte[] rgb = Encoding.UTF8.GetBytes(content);
RSACryptoServiceProvider privateKey1 = new RSACryptoServiceProvider();
privateKey1.ImportParameters(privateKey);
//加密算法 和 生成秘钥的对应起来
var halg = new SHA256CryptoServiceProvider();
byte[] inArray = privateKey1.SignData(rgb, halg);
//签名后转Base64
string signature = Convert.ToBase64String(inArray);
最新文章
- Node.js之sails框架
- MVC中Action 过滤
- android 入门-布局
- 【原】iOS学习之SQLite和CoreData数据库的比较
- atitit.web 推送实现方案集合
- CSS创建一个遮罩层
- iOS开发之在Xcode代码中插入类似QQ的表情
- ubuntu12.04_64bit adb shell
- CSU1327+贪心+模拟
- 如何用Github的gh-pages分支展示自己的项目
- Sql Server 2008清理数据库日志的语句
- JAVA编程心得-JAVA实现CRC-CCITT(XMODEM)算法
- 读书共享 Primer Plus C-part 5
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxError Exception
- 学习ML.NET(2): 使用模型进行预测
- 前端 HTML body标签相关内容 常用标签 表单标签 form 表单控件分类
- iOS开发中与库相关的术语
- 《深入浅出WPF》读书笔记
- cocos2d-x游戏引擎核心之四——动作调度机制
- 【Loadrunner】使用LR录制HTTPS协议的三种方法