C#RSA对接JAVA中RSA方式的示例分析

这篇文章主要为大家展示了“C#RSA对接JAVA中RSA方式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#RSA对接JAVA中RSA方式的示例分析”这篇文章吧。

成都创新互联专注于企业成都全网营销、网站重做改版、岷县网站定制设计、自适应品牌网站建设、成都h5网站建设商城网站开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为岷县等各大城市提供网站开发制作服务。

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

/// <summary>
    /// c# 使用 java 的公钥进行rsa加密 utf8编码  通过解析公钥加密数据
    /// </summary>
    /// <param name="publickey"></param>
    /// <returns></returns>
    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);  
    }

      /// <summary>
      /// 私钥解密 通过解析私钥来解析数据 X509KeyStorageFlags.Exportable这个属性很关键是获取私钥信息的
      /// </summary>
      /// <param name="privatekey"></param>
      /// <param name="content"></param>
      /// <returns></returns>
     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的方式*************************************/
/// <summary> 
/// RSA公钥格式转换,java->.net
/// </summary>
/// <param name="publicKey">java生成的公钥</param>
/// <returns></returns>
public static string RSAPublicKeyJava2DotNet(string publicKey)
{
RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKey));
return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>",
Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()),
Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned()));
}

/// <summary>
/// RSA私钥格式转换,java->.net
/// </summary>
/// <param name="privateKey">java生成的RSA私钥</param>
/// <returns></returns>
public static string RSAPrivateKeyJava2DotNet(string privateKey)
{
 RsaPrivateCrtKeyParameters privateKeyParam = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(privateKey));

return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",
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()));

}

以上是“C#RSA对接JAVA中RSA方式的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!

网站栏目:C#RSA对接JAVA中RSA方式的示例分析
当前地址:https://www.cdcxhl.com/article20/pecojo.html

成都网站建设公司_创新互联,为您提供用户体验云服务器外贸建站标签优化Google商城网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站优化排名