C# RSA加密算法PEM格式转换XML

c# rsa加密需要xml公钥  如何将pem格式转换成xml (c# rsa只支持XML格式的)

 RSA PEM格式(蓝色部分是公钥=publicKey):

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUABgQD5MIb5ZQhNGhsUjfFbn7y6nY6tsqV9LcC2s/rLpu9sz8CplsTy2SuTG0o7y9ICXW6oRUC9bVxI8TfTK4bbSrNQ6UoExzQFdbc3pEGun3iCy+inBhIC6xf5Z7lN+WqTKCZ607iLwKh+wDdZc6U4x1rxF4vngk1sXIdnYEoGjpRNLQIDAQAB
-----END PUBLIC KEY-----

使用BouncyCastle组件,PM> Install-Package BouncyCastle

/// <summary>    
/// RSA公钥格式转换, 
/// </summary>    
/// <param name="publicKey">pem公钥</param>    
/// <returns></returns>    
public static string RSAPublicKeyXML(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公钥pem-->XML格式转换, 
        /// </summary>    
        /// <param name="publicKey">pem公钥</param>    
        /// <param name="content">要加密的内容:比如密码</param>  
        /// <returns></returns>    
        public string RSAPublicKey(string publicKey,string content)
        {
            RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKey));
            string XML = string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>",
                Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()),
                Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned()));

            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            byte[] cipherbytes;
            rsa.FromXmlString(XML);
            cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);
            return Convert.ToBase64String(cipherbytes);
        }

 

XML to PEM 和 PEM to XML相互转换:

 

 

https://superdry.apphb.com/tools/online-rsa-key-converter

在线RSA加密解密,RSA公钥私钥加密解密

http://www.metools.info/code/c81.html

 

JS加密公钥的方法:

 var crypt = new JSEncrypt({
                    default_key_size: 1024
                });
                crypt.setPublicKey("MIGfMA0GCSqGSIb3DQEBAQgQDIDOFZiLonAYjlUg+fLIs6HbMFpnw+legVMfVsBB+lnsLYsaPYv/0RMMvjY06uPmdya6ymmYxRieGJiaf0N024oHNqtGnSNK/a8YP1nZLBtBwk2VzEb/rBbdCLhkznIOkNMwy20VG/M5LOXiLkYRry8AEQIDAQAB");
                var PWD = crypt.encrypt('1');

                console.log(PWD);------------->最终的公钥加密字符串,可以用于向后台接口请求数据。

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页