C#中通过FromXmlString属性加载的是XML形式,而JAVA中用到的是解析后的PEM格式的字符串,总之读取证书中信息无非是转换方式问题

///

/// c# 使用 java 的公钥进行rsa加密 utf8编码 通过解析公钥加密数据

///

///

///

public static string RSAEncrypts(string content)

{

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

byte[] cipherbytes;

X509Certificate2 x509Certificate2 = new X509Certificate2("D:\\Config\\dsptest.cer");

//创建并返回当前算法对象的xml字符串表示形式

string publicKeyString = x509Certificate2.PublicKey.Key.ToXmlString(false);

rsa.FromXmlString(publicKeyString);

//rsa.FromXmlString(RSAPublicKeyJava2DotNet(publicKeyString));

cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);

return Convert.ToBase64String(cipherbytes);

}

///

/// 私钥解密 通过解析私钥来解析数据 X509KeyStorageFlags.Exportable这个属性很关键是获取私钥信息的

///

///

///

///

public static string RSADecrypt( string content)

{

byte[] rgb = Convert.FromBase64String(content);

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

byte[] cipherbytes;

X509Certificate2 x509Certificate2 = new X509Certificate2("D:\\Config\\test.pfx", "cfca1234", X509KeyStorageFlags.Exportable);

//创建并返回当前算法对象的xml字符串表示形式

//rsa.FromXmlString(RSAPrivateKeyJava2DotNet(Const.privatekey));

rsa.FromXmlString(x509Certificate2.PrivateKey.ToXmlString(true));

cipherbytes = rsa.Decrypt(Convert.FromBase64String(content), false);

return Encoding.UTF8.GetString(cipherbytes);

}

/***************以下是java提供的公私钥转成.net公私钥XML的方式*************************************/

///

/// RSA公钥格式转换,java->.net

///

/// java生成的公钥

///

public static string RSAPublicKeyJava2DotNet(string publicKey)

{

RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKey));

return string.Format("{0}{1}",

Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()),

Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned()));

}

///

/// RSA私钥格式转换,java->.net

///

/// java生成的RSA私钥

///

public static string RSAPrivateKeyJava2DotNet(string privateKey)

{

RsaPrivateCrtKeyParameters privateKeyParam = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(privateKey));

return string.Format("{0}{1}

{2}

{3}{4}{5}{6}{7}",

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()));

}

以上实例大家可以测试下,感谢大家对脚本之家的支持。

ras私钥c#转java_C#RSA对接JAVA中RSA方式代码实例相关推荐

  1. ras私钥c#转java_C#和JAVA的RSA密钥、公钥转换

    C#的秘钥跟JAVA的密钥区别 RSA对于程序本身是没有区别的,其格式都是相同的.对于不同的程序来说,存储使用的语法(包装的类)会有所不同. RSA语法和语法标准有很多,大的类型大概分为ASN.1.P ...

  2. java的rsa作用_java 中RSA的方式实现非对称加密的实例

    java 中rsa的方式实现非对称加密的实例 rsa通俗理解: 你只要去想:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密:同理,既然是签名,那肯 ...

  3. java rsa 解密_Java中RSA加密解密的实现方法分析

    本文实例讲述了Java中RSA加密解密的实现方法.分享给大家供大家参考,具体如下: public static void main(String[] args) throws Exception { ...

  4. java中GET方式提交和POST方式提交

    java中GET方式提交的示例: /*** 获取关注列表;* @return*/@SuppressWarnings("unchecked")public static ArrayL ...

  5. java编写螺旋矩阵讲解_Java如何实现螺旋矩阵 Java实现螺旋矩阵代码实例

    本篇文章小编给大家分享一下Java实现螺旋矩阵代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时 ...

  6. java学习 类变量 类方法_这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下类变量(...

    这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类变量(static) 类变量是该类的所有对象共 ...

  7. Java并发工具辅助类代码实例

    java中的并发工具类 一:等待多线程完成的CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作. packag``.fuzhulei; import ja ...

  8. Java中调用C++代码

    Java中调用C++代码 1.Idea创建一个Solution类 public class Solution {public native void sayHello();static{System. ...

  9. python rsa库_Python中rsa模块【sign 加签验签】的使用

    安装 pip install rsa 使用一 说明:简单入门使用  使用公钥加密  ----------->> 使用私钥进行解密 1 #-*- coding:utf-8 -*- 2 imp ...

最新文章

  1. 京东姚霆:推理能力,正是多模态技术未来亟需突破的瓶颈!
  2. php--------返回404状态
  3. Garbage First(G1)垃圾收集器
  4. MySQL字符编码设置
  5. SpringData核心数据访问接口--CrudRepository示例
  6. boost::geometry::append用法的测试程序
  7. Bzoj 3166 [Heoi2013] Alo 题解
  8. 【白皮书分享】直播社会价值白皮书-字节跳动.pdf(附下载链接)
  9. 学习编程之前应该先学习哪些基础?
  10. 每日学点python之六(列表与元组)
  11. 从MDK分散加载文件学习STM32启动流程
  12. 统计学知识:相关系数
  13. 富而喜悦2023直播盛典 唐苓馨主题演说“特别的礼物”!
  14. Redis分布式缓存学习总结1(安装)
  15. 小米手机无法打包的解决方案
  16. 2. Excel数据格式
  17. 如何本地安装微擎系统
  18. 花小猪孙枢:希望做一款实惠好玩的新产品
  19. 个人店铺选择在淘宝上开店还是拼多多?
  20. Linux上传下载软件lrzsz

热门文章

  1. php选择符和举例子,关于CSS3中选择符的实例详解
  2. .jar中没有主清单属性_IDEA中spring boot helloword打包运行-0228-2020
  3. 1689: 营救小明(bfs+priority_queue逆向思维)
  4. java 反射 私有成员_Java对类私有变量的暴力反射技术讲解
  5. java double 小数点后两位小数_Java中double类型的数据精确到小数点后两位
  6. “问答官”活动SQL专场来啦!小米行李箱、无线鼠标等你拿!
  7. 阿里Java高考卷来了,你能得几分?
  8. 原以为原神是米哈游的极限,看过美术总监的年番,恍然大悟!
  9. SQL基础【十三、通配符】
  10. es常用curl命令