RSACryptoServiceProvider RSA的私钥 如何转换为XML格式
我用RSA SHA256 进行签名。只用到一个私钥。字符串格式。
但用的时候要去转换很长代码。有些麻烦。如果直接转换为XML格式。那么一句话就可以了。
RSACryptoServiceProvider rsaCsp = new RSACryptoServiceProvider();
rsaCsp.FromXmlString("");
但我手上只有一串私钥。不是XML格式。[这个随便写的啊,不正确的值,只供格式参考]
string strPrivateKey="mX/9zl8rflH5pLaP5P1Qd/9wXwNBSx7OpLlYDnGr7wD0njiDfPSUkgf9oF5NcvZwl24qdJ1SLmrgUtnr+yeXBNZNKaan1xXKISHdlHvbW5G8nJCJW6CuaHMkVw3Y7kwaIIlUdv09vxfjj0AoabttjbtF1kqETzbQ6fK3EN6sY5U=";
我要转换为XML格式。
<RSAKeyValue>
<Modulus>111</Modulus>
<Exponent>AQAB</Exponent>
<P>222</P>
<Q>333/DP>
<DQ>444</DQ>
<InverseQ>555</InverseQ>
<D>666</D>
</RSAKeyValue>
用纯C#的代码如何操作。不想用三方的组件。
三方的有个代码可以实现。网上有意思对的。但不是我要的。
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()));
麻烦大神给个代码。应该不理难。或者直接把私钥字符串导入给RSACryptoServiceProvider。写个最简单的不引用三方的。
我想到的就是转XML。一句话搞定,但转换又得用三方。所以也不是我想要的。谢谢