设为首页 加入收藏

TOP

RSA非对称 私钥加密(二)
2019-09-23 18:10:58 】 浏览:89
Tags:RSA 对称 加密
1, Convert.FromBase64String(doc.DocumentElement.GetElementsByTagName("InverseQ")[0].InnerText)); 40 41 RsaPrivateCrtKeyParameters privateKeyParam = new RsaPrivateCrtKeyParameters(m, exp, d, p, q, dp, dq, qinv); 42 43 PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(privateKeyParam); 44 byte[] serializedPrivateBytes = privateKeyInfo.ToAsn1Object().GetEncoded(); 45 return Convert.ToBase64String(serializedPrivateBytes); 46 } 47 48 /// <summary> 49 /// RSA公钥格式转换,java->.net 50 /// </summary> 51 /// <param name="publicKey">java生成的公钥</param> 52 /// <returns></returns> 53 public static string RSAPublicKeyJava2DotNet(string publicKey) 54 { 55 RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKey)); 56 return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>", 57 Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()), 58 Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned())); 59 } 60 61 /// <summary> 62 /// RSA公钥格式转换,.net->java 63 /// </summary> 64 /// <param name="publicKey">.net生成的公钥</param> 65 /// <returns></returns> 66 public static string RSAPublicKeyDotNet2Java(string publicKey) 67 { 68 XmlDocument doc = new XmlDocument(); 69 doc.LoadXml(publicKey); 70 BigInteger m = new BigInteger(1, Convert.FromBase64String(doc.DocumentElement.GetElementsByTagName("Modulus")[0].InnerText)); 71 BigInteger p = new BigInteger(1, Convert.FromBase64String(doc.DocumentElement.GetElementsByTagName("Exponent")[0].InnerText)); 72 RsaKeyParameters pub = new RsaKeyParameters(false, m, p); 73 74 SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(pub); 75 byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded(); 76 return Convert.ToBase64String(serializedPublicBytes); 77 } 78 } View Code

私钥加密数据

 1 /// <summary>
 2         /// 用私钥给数据进行RSA加密  
 3         /// </summary>  
 4         /// <param name="xmlPrivateKey">私钥</param>  
 5         /// <param name="strEncryptString">待加密数据</param>  
 6         /// <returns>加密后的数据(Base64)</returns>  
 7         public static string RSAEncryptByPrivateKey(string xmlPrivateKey, string strEncryptString)
 8         {
 9             //加载私钥  
10             RSACryptoServiceProvider privateRsa = new RSACryptoServiceProvider(1024);
11             privateRsa.FromXmlString(xmlPrivateKey);
12 
13             //转换密钥  
14             AsymmetricCipherKeyPair keyPair = DotNetUtilities.GetKeyPair(privateRsa);
15 
16             IBufferedCipher c = CipherUtilities.GetCipher("RSA/ECB/PKCS1Padding");// 参数与Java中加密解密的参数一致
17             //第一个参数为true表示加密,为false表示解密;第二个参数表示密钥
18             c.Init(true, keyPair.Private);
19 
20             byte[] DataToEncrypt = Encoding.UTF8.GetBytes(strEncryptString);
21             byte[] outBytes = c.DoFinal(DataToEncrypt);//加密  
22             string strBase64 = Convert.ToBase64String(outBytes);
23 
24             return strBase64;
25         }
View Code

需要引用BouncyCastle.Crypto.dll

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇abp(net core)+easyui+efcore实现.. 下一篇C# 10分钟入门基于WebOffice实现..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目