我正在使用充气城堡master
来阅读RSA私钥。
我想获得一些属性来唯一地识别RSA私钥。
privateKey = RSA私钥的字节
RsaPrivateCrtKeyParameter
我正在将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
。
我可以使用任何此类属性来唯一标识密钥吗?
我可以使用这些方法中的任何一种 - DP,DQ,P,PublicExponent,Q,QInv或GetHashCode 获取唯一数据以识别密钥。
我的要求是从rsa密钥中获取人类可读的字符串(如KeyId),因此必须唯一地标识每个rsa密钥。它可能是一些KeyId或指纹/ fingureprint
答案 0 :(得分:1)
他想要存储私钥,但是根据密钥的内容为它们提供唯一的索引参数。
在这种情况下 - 我建议使用与私钥关联的私钥或公钥的Sha256散列,然后将它们存储在数据库中。
答案 1 :(得分:1)
如果公共指数是固定的(通常是65537),你应该只使用公钥模数的一些低位来形成一个索引,但不要打扰最低位的位,因为它& #39; s总是" 1"。这当然非常快。
通过仅使用公钥,您不会冒泄漏有关私钥的信息进入索引的风险。如果您将私钥和公钥都存储在同一个数据库中,那么您可以执行类似附加" 1"然后取出原始索引并附加" 1"位或" 0"取决于公钥或私钥是否被编入索引。