C # achieve SHA256WithRSA encrypted private keys for Java

Java is first necessary to convert the secret key, and then encrypts

 

Restructuring of the secret key method

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

Encryption method

public  static  String Sign ( String contentForSign, String privateKey) 
        { 
            // converted into a secret key applied to .Net 
            var netkey = RSAPrivateKeyJava2DotNet (privateKey);
             var RSA = new new the RSACryptoServiceProvider (); 
            rsa.FromXmlString (netkey); 
            // Create a null object 
            var rsaClear = new new the RSACryptoServiceProvider ();
             var Paras = rsa.ExportParameters ( to true ); 
            rsaClear.ImportParameters (Paras); 
            // signature returns 
            the using ( var sha256 = new SHA256CryptoServiceProvider())
            {
                var signData = rsa.SignData(Encoding.UTF8.GetBytes(contentForSign), sha256);
                return BytesToHex(signData);
            }
        } 


public static string BytesToHex(byte[] data)
{
            StringBuilder sbRet = new StringBuilder(data.Length * 2);
            for (int i = 0; i < data.Length; i++)
            {
                sbRet.Append(Convert.ToString(data[i], 16).PadLeft(2, '0'));
            }
            return sbRet.ToString();
}

 

transfer:

string rsaSecret = @"MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAjdAhDuqzKCzaYyrrxFLdWVoR7wwmSdbVHBSZ/lpILvN/vPaohbi0NChwAEXYbvIXrFQ7zQyuqKazoEbvvXRNKQ.......";

string signDataString = Sign("Hello World!", rsaSecret);

 

Guess you like

Origin www.cnblogs.com/bzmy/p/11504413.html