標籤:static cto style coding ide provider encoding span factor
關於JAVA和C#加解密通訊的話,可以用這個BouncyCastle外掛程式,會協助你解決很多問題
http://www.bouncycastle.org/
//c#使用java給的公開金鑰進行rsa加密public static byte[] RSAEncrypt(string publickey, string content) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); byte[] publicKeyBytes = Convert.FromBase64String(publickey); AsymmetricKeyParameter asymmetricKeyParameter = PublicKeyFactory.CreateKey(publicKeyBytes); RsaKeyParameters rsaKeyParameters = (RsaKeyParameters)asymmetricKeyParameter; RSAParameters rsaParameters = new RSAParameters(); rsaParameters.Modulus = rsaKeyParameters.Modulus.ToByteArrayUnsigned(); rsaParameters.Exponent = rsaKeyParameters.Exponent.ToByteArrayUnsigned(); rsa.ImportParameters(rsaParameters); return rsa.Encrypt(Encoding.GetEncoding("gbk").GetBytes(content), false); }
使用方法:
string tempStr=Convert.ToBase64String(RSACoder.RSAEncrypt("公開金鑰", "需要加密碼的字元"))
普通C#自身調用加解密:
RSACryptoServiceProvider oRSA = new RSACryptoServiceProvider(); string privatekey = oRSA.ToXmlString(true);//私密金鑰 string publickey = oRSA.ToXmlString(false);//公開金鑰 //這兩個密鑰需要儲存下來 byte[] messagebytes = Encoding.UTF8.GetBytes("luo羅"); //需要加密的資料 //公開金鑰加密 RSACryptoServiceProvider oRSA1 = new RSACryptoServiceProvider(); oRSA1.FromXmlString(publickey); //加密要用到公開金鑰所以匯入公開金鑰 byte[] AOutput = oRSA1.Encrypt(messagebytes, false); //AOutput 加密以後的資料 //私密金鑰解密 RSACryptoServiceProvider oRSA2 = new RSACryptoServiceProvider(); oRSA2.FromXmlString(privatekey); byte[] AInput = oRSA2.Decrypt(AOutput, false); string reslut = Encoding.UTF8.GetString(AInput);
Java和C# RSA加解密相互連信和使用公開金鑰加密傳輸