2011-02-03 58 views
1

我正在用.net(c#)编写一个程序,使用Liping Share ASN1 Editor,它可以很好地解码给定的CSR。
所以,我的问题是:如何获得给定CSR的位大小? (我想测试它是否为1024或更高版本)
我已经尝试过.net X509Certificate类,但只适用于证书,不适用于CSR。
不可能使用Java类或解析包含CSR解码器的网站。 (尽管我已经认为这将比解决问题要容易得多,否则)如何获得给定CSR的密钥大小?

也许解决方案非常简单,我只是不明白,但如果任何人都可以给我一个建议,我会非常感激! (过去两天谷歌太多了!!)

回答

0

这似乎很简单:只要看看CSR本身的前几个字符。如果它以MIIC开头,它是512位,MIID是1024位。这里有一个简单的观点:

 
Beginning Number of 
Characters bits in CSR 
---------- ----------- 
MIIC  512-bits 
MIID  1024-bits 
MIIE  2048-bits 
MIIG  4096-bits 
MIIK  8192-bits 
MIIS  16384-bits 

我还没有得到验证(通过规范文件的条款),这是100%可靠的,但它似乎是成立的,由基于范例的研究我支持已经完成(发现on several sites,并从我个人的经验中产生具有不同位数的CSR)。

+0

我认为此信息不准确。我有一个公钥为2048的CSR,并且从MIICYTCC开始 – 2013-04-05 19:32:49

1

我对c#不是很熟悉,但知道PHP首先需要从CSR获取CSR公钥,然后检查公钥中的密钥大小。

openssl_pkey_get_details(openssl_csr_get_public_key($your_csr)); 

回报是包括位大小公钥信息的数组。

注:我从测试和广泛的研究发现,由JSmitty提到的方法是不可靠的。