起因

项目开发中途出现需求需要对接其他公司接口,使用证书进行认证传输,之前在.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);

最新文章

  1. Node.js之sails框架
  2. MVC中Action 过滤
  3. android 入门-布局
  4. 【原】iOS学习之SQLite和CoreData数据库的比较
  5. atitit.web 推送实现方案集合
  6. CSS创建一个遮罩层
  7. iOS开发之在Xcode代码中插入类似QQ的表情
  8. ubuntu12.04_64bit adb shell
  9. CSU1327+贪心+模拟
  10. 如何用Github的gh-pages分支展示自己的项目
  11. Sql Server 2008清理数据库日志的语句
  12. JAVA编程心得-JAVA实现CRC-CCITT(XMODEM)算法
  13. 读书共享 Primer Plus C-part 5
  14. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxError Exception
  15. 学习ML.NET(2): 使用模型进行预测
  16. 前端 HTML body标签相关内容 常用标签 表单标签 form 表单控件分类
  17. iOS开发中与库相关的术语
  18. 《深入浅出WPF》读书笔记
  19. cocos2d-x游戏引擎核心之四——动作调度机制
  20. 【Loadrunner】使用LR录制HTTPS协议的三种方法

热门文章

  1. SparkCore
  2. tomcat 认证爆破之custom iterator使用
  3. 【新生学习】深度学习与 PyTorch 实战课程大纲
  4. Java基础加强笔记——测试、反射、注解
  5. Python package project
  6. 使用vuex做列表数据过滤
  7. 不看会后悔系列之idea的使用小技巧
  8. PHP imageaffine - 返回经过仿射变换后的图像
  9. PDOStatement::getColumnMeta
  10. 深入理解mysql-进阶知识点,启动项、系统变量、字符集介绍!