C# RSA加密与JAVA RSA互通
现在一个接口问题,需要客户端(.net)根据RSA生成公钥通过接口发送到服务端(java)
我代码是这样写的:
/// <summary>
/// RSA加密
/// </summary>
/// <param name="str_Plain_Text">需要加密的明文</param>
/// <param name="str_Public_Key">公钥</param>
/// <param name="str_Private_Key">私钥</param>
/// <returns></returns>
public static string RSA_Encrypt(string str_Plain_Text, out string str_Public_Key, out string str_Private_Key)
{
str_Public_Key = "";
str_Private_Key = "";
UnicodeEncoding ByteConverter = new UnicodeEncoding();
byte[] DataToEncrypt = ByteConverter.GetBytes(str_Plain_Text);
try
{
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
str_Public_Key = Convert.ToBase64String(RSA.ExportCspBlob(false));
str_Private_Key = Convert.ToBase64String(RSA.ExportCspBlob(true));
//OAEP padding is only available on Microsoft Windows XP or later.
byte[] bytes_Cypher_Text = RSA.Encrypt(DataToEncrypt, false);
str_Public_Key = Convert.ToBase64String(RSA.ExportCspBlob(false));
str_Private_Key = Convert.ToBase64String(RSA.ExportCspBlob(true));
string str_Cypher_Text = Convert.ToBase64String(bytes_Cypher_Text);
return str_Cypher_Text;
}
catch (CryptographicException e)
{
Console.WriteLine(e.Message);
return null;
}
}
然后不管怎么调用接口,返回的数据都是空,服务端JAVA那边人说,公钥是正确的就能得到数据,他们本地测试的生成公钥的方法如下:
BASE64Encoder base64Encoder = new BASE64Encoder();
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
// 初始化密钥对生成器,密钥大小为2048位
keyPairGen.initialize(2048);
// 生成一个密钥对,保存在keyPair中
KeyPair keyPair = keyPairGen.generateKeyPair();
// 得到私钥
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
// 得到公钥
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
Call call=(Call) service.createCall();
call.setTargetEndpointAddress(new URL(SOAP_SERVICE_ENDPOINT));
call.setOperationName("getKey");//调用getKey方法
//传入的公钥
String pk=base64Encoder.encode(publicKey.getEncoded());
各位大神!!!!!!!!请帮忙解决下这个问题,小弟在线等,非常着急
我代码是这样写的:
/// <summary>
/// RSA加密
/// </summary>
/// <param name="str_Plain_Text">需要加密的明文</param>
/// <param name="str_Public_Key">公钥</param>
/// <param name="str_Private_Key">私钥</param>
/// <returns></returns>
public static string RSA_Encrypt(string str_Plain_Text, out string str_Public_Key, out string str_Private_Key)
{
str_Public_Key = "";
str_Private_Key = "";
UnicodeEncoding ByteConverter = new UnicodeEncoding();
byte[] DataToEncrypt = ByteConverter.GetBytes(str_Plain_Text);
try
{
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
str_Public_Key = Convert.ToBase64String(RSA.ExportCspBlob(false));
str_Private_Key = Convert.ToBase64String(RSA.ExportCspBlob(true));
//OAEP padding is only available on Microsoft Windows XP or later.
byte[] bytes_Cypher_Text = RSA.Encrypt(DataToEncrypt, false);
str_Public_Key = Convert.ToBase64String(RSA.ExportCspBlob(false));
str_Private_Key = Convert.ToBase64String(RSA.ExportCspBlob(true));
string str_Cypher_Text = Convert.ToBase64String(bytes_Cypher_Text);
return str_Cypher_Text;
}
catch (CryptographicException e)
{
Console.WriteLine(e.Message);
return null;
}
}
然后不管怎么调用接口,返回的数据都是空,服务端JAVA那边人说,公钥是正确的就能得到数据,他们本地测试的生成公钥的方法如下:
BASE64Encoder base64Encoder = new BASE64Encoder();
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
// 初始化密钥对生成器,密钥大小为2048位
keyPairGen.initialize(2048);
// 生成一个密钥对,保存在keyPair中
KeyPair keyPair = keyPairGen.generateKeyPair();
// 得到私钥
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
// 得到公钥
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
Call call=(Call) service.createCall();
call.setTargetEndpointAddress(new URL(SOAP_SERVICE_ENDPOINT));
call.setOperationName("getKey");//调用getKey方法
//传入的公钥
String pk=base64Encoder.encode(publicKey.getEncoded());
各位大神!!!!!!!!请帮忙解决下这个问题,小弟在线等,非常着急
...全文
相关推荐
C#与java平台RSA加密解密签名验签互通案例
C#与java平台RSA加密解密签名验签互通案例,解决RSA在C#与java加密算法不同导致验签不过情况
RSA加密算法实现以及C#与java互通加解密
RSA加密算法实现以及C#与java互通加解密,解决RSA算法在java与C#相互通用
C#和Java关于RSA非对称加密互通类
C#和Java关于RSA非对称加密互通类,包括提供RSA加密、解密方法,Java到c#的RSA私钥格式转换,Java到c#的RSA公钥格式转换等,使用PKCS1填充算法
C# 实现与JAVA互通 加签/验签,RSA加密/解密
* RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。 * RSA加密解密:【私钥解密,公钥加密】。RSA数字签名-俗称加签验签:私钥加签,公钥验签。 BouncyCastle:【私钥加密】【公钥解密】 BouncyCastle加签/验签
RSA-encryption-between-CSharp-and-java.rar_between_rsa_rsa cshar
关于不对称加密算法 RSA 在.Net平台与Java平台的互通互用的原理、例子参考,难得的整理


