C#RSA对接JAVA中RSA方式代码的示例分析
创始人
2024-12-22 10:41:01
0次

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

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...