我正在使用充气城堡RsaPrivateCrtKeyParameter
来阅读RSA私钥。我想获得一些属性来唯一地标识RSA私钥。
privateKey = RSA私钥的字节数
using (Stream stream = new MemoryStream(privateKey))
{
using (var reader = new StreamReader(stream))
{
RsaPrivateCrtKeyParameters rsaPrivatekey;
var privateKeyObject = new PemReader(reader).ReadObject();
rsaPrivatekey = (RsaPrivateCrtKeyParameters) privateKeyObject;
//KeyId = here some property of rsaPrivatekey to indentify this key uniquely
}
}
我正在把rsaPrivatekey
铸造到Org.BouncyCastle.Crypto.Parameters.RsaPrivateCrtKeyParameters
。我可以使用任何此类属性来唯一标识密钥吗?
我可以使用任何此方法 - DP,DQ,P,PublicExponent,Q,QInv或GetHashCode来获取唯一数据来识别密钥。
我的要求是从rsa密钥(如KeyId)获取人类可读的字符串,因此必须唯一地标识每个rsa密钥。它可能是一些密钥ID或指纹/指纹
他想要存储私钥,但是根据密钥的内容为它们提供唯一的索引参数。
在这种情况下 - 我建议使用与私钥关联的私钥或公钥的Sha256散列,然后将它们存储在数据库中。
如果公共指数是固定的(通常是65537),你应该只使用公钥模数的一些低位来形成一个索引,但不要打扰最低位的位,因为它总是“1”。这当然非常快。
通过仅使用公钥,您不会冒泄漏有关私钥的信息进入索引的风险。如果您将私钥和公钥存储在同一个数据库中,那么您可以执行类似附加“1”位的操作,然后获取原始索引并根据公共位置或“或”位添加“1”位或“0”位。正在索引私钥。