欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#RSA對接JAVA中RSA方式代碼實例

 更新時間:2019年09月01日 16:00:30   作者:盛開的雨季  
在本篇文章中小編給各位整理的是關于C#RSA對接JAVA中RSA方式代碼實例,有需要的朋友們可以參考一下。

C#中通過FromXmlString屬性加載的是XML形式,而JAVA中用到的是解析后的PEM格式的字符串,總之讀取證書中信息無非是轉換方式問題

/// <summary>
    /// c# 使用 java 的公鑰進行rsa加密 utf8編碼  通過解析公鑰加密數(shù)據(jù)
    /// </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");
      //創(chuàng)建并返回當前算法對象的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>
      /// 私鑰解密 通過解析私鑰來解析數(shù)據(jù) 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);
      //創(chuàng)建并返回當前算法對象的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()));

}

以上實例大家可以測試下,感謝大家對腳本之家的支持。

相關文章

  • 將字符串轉換成System.Drawing.Color類型的方法

    將字符串轉換成System.Drawing.Color類型的方法

    將字符串轉換成System.Drawing.Color類型的方法,需要的朋友可以參考一下
    2013-04-04
  • 用Newtonsoft將json串轉為對象的方法(詳解)

    用Newtonsoft將json串轉為對象的方法(詳解)

    下面小編就為大家?guī)硪黄肗ewtonsoft將json串轉為對象的方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 基于C#編寫獲取硬件信息的工具類

    基于C#編寫獲取硬件信息的工具類

    這篇文章主要為大家詳細介紹了如何利用C#編寫一個獲取硬件信息的簡單工具類,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-11-11
  • C#的this關鍵字的2種用法

    C#的this關鍵字的2種用法

    這篇文章主要給大家分享的是C#的this關鍵字的2種用法,在使用C#的過程中,發(fā)現(xiàn)this關鍵是比較少用的,但是在下面這二個場合下是必須要使用的,不使用它是解決不了問題。下面我們就來看看文章的具體內容吧
    2021-10-10
  • C#/Java連接sqlite與使用技巧

    C#/Java連接sqlite與使用技巧

    無意中發(fā)現(xiàn)的,C#/Java連接sqlite與使用技巧??戳讼?,還挺不錯的。與大家分享一下。
    2013-04-04
  • C#中泛型舉例List<T>與DataTable相互轉換

    C#中泛型舉例List<T>與DataTable相互轉換

    這篇文章介紹了C#中泛型舉例List<T>與DataTable相互轉換的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#驗證給定字符串是否為數(shù)字的方法

    C#驗證給定字符串是否為數(shù)字的方法

    這篇文章主要介紹了C#驗證給定字符串是否為數(shù)字的方法,實例分析了C#進行字符串操作的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • C# 8.0中的范圍類型(Range Type)示例詳解

    C# 8.0中的范圍類型(Range Type)示例詳解

    這篇文章主要給大家介紹了關于C# 8.0中范圍類型(Range Type)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • Unity實現(xiàn)簡單虛擬搖桿

    Unity實現(xiàn)簡單虛擬搖桿

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)簡單虛擬搖桿,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C# HttpClient Cookie驗證解決方法

    C# HttpClient Cookie驗證解決方法

    本文將詳細介紹C# HttpClient Cookie驗證解決方法,需要了解的朋友可以參考下
    2012-11-11

最新評論