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

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

}

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

IATF16949核心职位全解析 TM / Top MgmtMR / QMRProcess OwnerQMQAQCSQECQEPQEPETEMEIEPM / PJMFMEA ModeratorMSA CoordinatorSPC CoordinatorCM / CCB内审员CP / CPK 阅读详情

相关推荐

RSA加密算法实现以及C#java互通加解密

RSA加密算法实现以及C#java互通加解密,解决RSA算法在javaC#相互通用

RSA密钥之C#格式与Java格式

前言   最近由于项目需求,服务端由c#编写,客户端由java编写。通信数据使用RSA非对称加密。但是javac#生成的密钥格式是不一样的,所以需要换格式才可以正常使用。网上搜到使用java进行格式换的代码(如:http://blog.csdn.net/road2010/article/details/40071881),本文将给出一种c#的实现方法。 密钥格式 java密钥格式如...

weixin_33772645的博客 248

各行业专业日语大全(日中).pdf

各行业专业日语大全(日中).pdf

RSA加密及其在C#中的使用

RSA加密算法在C#中的使用

iningwei的博客 2963

C#.NET Framework RSA 私钥签名 公钥验签(验证签名)

RSA 私钥长度1024 ,RSA2 私钥长度2048 /// RSA 私钥长度1024 ,RSA2 私钥长度2048/// 公钥证书文本内容/// pcsk1 私钥的文本内容

woaimx_1314的博客 5304

c#RSA的公私钥格式换,.net格式与.Java格式之间的

c#生成的.net格式。

dudumc的博客 930

RSA 数字签名算法(.net版)

直接上代码,不BB public class RSASign { public static string RSASignature(string data, string privateKeyPem, string charset, bool keyFromFile, string signType) { ...

weixin_30237281的博客 369

ras私钥c#java_C#JAVARSA密钥、公钥

C#的秘钥跟JAVA的密钥区别RSA对于程序本身是没有区别的,其格式都是相同的。对于不同的程序来说,存储使用的语法(包装的类)会有所不同。RSA语法和语法标准有很多,大的类型大概分为ASN.1、PKCS、X.509。RSA语法介绍ASN.1、PKCS是最初的,也是最主要的RSA公钥和私钥的语法标准,被RSA Lab所维护。ASN.1、PKCS#1都定义了公钥和私钥的类型——序列化的数字。为了下一个...

weixin_28756833的博客 966

ras私钥c#java_Java RSA公钥、私钥C#RSA公钥、私钥

1 /// 2 ///RSA私钥格式换,java->.net3 /// 4 /// java生成的RSA私钥5 /// 6 public static string RSAPrivateKeyJava2DotNet(stringprivateKey)7 {8 RsaPri...

weixin_39618597的博客 284

C# Java间进行RSA加密解密交互(三)

原文: C# Java间进行RSA加密解密交互(三) 接着前面一篇C# Java间进行RSA加密解密交互(二)说吧,在上篇中为了实现 /** * RSA加密 * @param text--待加密的明文 * @param key--公钥,由服务器端提供的经base64编码的字符串 * @return ...

weixin_33768481的博客 137

C#Java实现互通的RSA&DES加解密算法(二)

C#Java实现互通的RSA&DES加解密算法

zhuxing_founder的专栏 1448

.NetRSA签名(调的JAVA的接口)

.net RAS签名验证

SunGuangHuiM的博客 603

java rsa类,兼容JAVARSA加密解密类

最近在进行支付系统的开发,其中遇到了一些平台是RSA算法进行加密解密和签名进行通讯、因为2个平台之间的区别采了不少坑,特地记录一下。一、 算法依赖于 Org.BouncyCastle包,首先选择自己的项目,右键点击管理“NuGet程序包”.image.png二、搜索“BouncyCastle”,下载最多的就是啦。image.png三、下面是加密解密类,直接引入系统即可using System;us...

weixin_39640773的博客 439

C#.NET Rsa 公钥加密-私钥解密

nuget 中引用Portable.BouncyCastle。 工具类: RsaUtil: using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using System; using System.IO; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; namespace.

LiuV 6504

C# 通过java生成的RSA公钥加密和解密

最近工作需要将对方公司生成的RSA加密公钥进行明文加密和解密,发现了几点贴出来做个笔记。 RSA单次加密是有长度限制!微软封装的加密方法如果出现长度超出指定范围的话报错是直接报“该项不适于在指定状态下使用”... 如需加密只能分段加密! 直接将现在使用的封装类贴出来吧。 新建一个类,里面有很多扩展函数 using System; using System.Collec...

600

ras私钥c#java_RSA:如何在Java中生成私钥并在C#中使用它?

I would like to generate private key in java, save it as a 64 base encoded string in some fileand then encrypt some phrase in C# using this saved file.I know to generate keys in java and encode it wit...

weixin_33001177的博客 298

C#下解析、生成JAVARSA密钥、公钥

需要用到的dll在nuget上的地址是:https://www.nuget.org/packages/BouncyCastle/,相关代码如下: using Org.BouncyCastle.Asn1.Pkcs; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Crypto.Parameters;

sky 胡萝卜星星 1万+

C#.NET Rsa私钥加密公钥解密

C#中,RSA私钥只能签名,不能加密,如果要加密,要借助BouncyCastle库。 nuget 中引用Portable.BouncyCastle。 工具类: RsaEncryptUtil using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using System; using System.Security.Cryptography.

LiuV 5537

asp.net RSA密钥之C#格式与Java格式换(PEM格式)

//商户私钥Java格式),公钥已上传         private static string PrivateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDETH1ziFZ70KCIqTjZvzWs/MIjrcbFptR748voH8fXDsuG2XHU+ds4f8tbuqgp4d4pW7bgwtyJOOYTuRHxh2Q...

XLaws的博客 1412

基于SpringBoot+Vue校园失物招领系统的设计与实现

校园失物招领系统的设计与实现前端采用了Vue框架,并结合ElementUI来实现界面的设计与布局。后端采用了SpringBoot框架进行开发设计,并结合了Java语言和MySQL数据库来实现。在功能上分为了前端用户模块和管理员模块。前端用户模块主要实现了招领物品信息的发布、查询与管理,失物信息的发布、管理以及自动匹配招领物品,查看校园相关通知公告。管理员模块主要实现了物品分类管理、校园通知管理以及物品招领信息的查询统计等功能。校园失物招领系统的实现优化失物招领的流程,提高了校园失物招领的效率,促进了校园文化的建设,营造了良好的诚信氛围。

上一篇: java实现modbustcp通讯_Modbus TCP双通道冗余技术
下一篇: bitmap画文字 居中_画非画展览馆 观赏石 第八期拍卖
衡壹
博客等级 码龄8年 17粉丝 62原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值