如何完全序列化/反序列化RSAParameters对象 [英] How to completely serialize/deserialize RSAParameters object
本文介绍了如何完全序列化/反序列化RSAParameters对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
RSAParameters
对象不支持私钥数据的序列化.如何完全序列化和反序列化私钥?
The RSAParameters
object does not support serialization of private key data. How can I serialize and deserialize a private key completely?
推荐答案
以下代码可用于使用您选择的序列化器对 RSAParameters
对象进行序列化和反序列化.
The following code may be used to serialize and deserialize RSAParameters
objects, using the serializer of your own choosing.
using System;
using System.Runtime.Serialization;
using System.Security.Cryptography;
[Serializable]
public class RSAParametersSerializable : ISerializable
{
private RSAParameters _rsaParameters;
public RSAParameters RSAParameters
{
get
{
return _rsaParameters;
}
}
public RSAParametersSerializable(RSAParameters rsaParameters)
{
_rsaParameters = rsaParameters;
}
private RSAParametersSerializable()
{
}
public byte[] D { get { return _rsaParameters.D; } set { _rsaParameters.D = value; } }
public byte[] DP { get { return _rsaParameters.DP; } set { _rsaParameters.DP = value; } }
public byte[] DQ { get { return _rsaParameters.DQ; } set { _rsaParameters.DQ = value; } }
public byte[] Exponent { get { return _rsaParameters.Exponent; } set { _rsaParameters.Exponent = value; } }
public byte[] InverseQ { get { return _rsaParameters.InverseQ; } set { _rsaParameters.InverseQ = value; } }
public byte[] Modulus { get { return _rsaParameters.Modulus; } set { _rsaParameters.Modulus = value; } }
public byte[] P { get { return _rsaParameters.P; } set { _rsaParameters.P = value; } }
public byte[] Q { get { return _rsaParameters.Q; } set { _rsaParameters.Q = value; } }
public RSAParametersSerializable(SerializationInfo information, StreamingContext context)
{
_rsaParameters = new RSAParameters()
{
D = (byte[])information.GetValue("D", typeof(byte[])),
DP = (byte[])information.GetValue("DP", typeof(byte[])),
DQ = (byte[])information.GetValue("DQ", typeof(byte[])),
Exponent = (byte[])information.GetValue("Exponent", typeof(byte[])),
InverseQ = (byte[])information.GetValue("InverseQ", typeof(byte[])),
Modulus = (byte[])information.GetValue("Modulus", typeof(byte[])),
P = (byte[])information.GetValue("P", typeof(byte[])),
Q = (byte[])information.GetValue("Q", typeof(byte[]))
};
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("D", _rsaParameters.D);
info.AddValue("DP", _rsaParameters.DP);
info.AddValue("DQ", _rsaParameters.DQ);
info.AddValue("Exponent", _rsaParameters.Exponent);
info.AddValue("InverseQ", _rsaParameters.InverseQ);
info.AddValue("Modulus", _rsaParameters.Modulus);
info.AddValue("P", _rsaParameters.P);
info.AddValue("Q", _rsaParameters.Q);
}
}
这篇关于如何完全序列化/反序列化RSAParameters对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文