【发布时间】:2011-12-17 12:31:35
【问题描述】:
首先让我说明这是一个美学问题。我已经解决了自己的问题,我只是对更好的方法感到好奇。
所以,我有一个证书 DN,如下所示:
CN=Jimmy Blooptoop,OU=Someplace,OU=Employees,DC=Bloopsoft-Inc
现在,我想从中获取 CN。在 java 中,除了从 X509 证书中获取完整的 DN 外,没有原生支持,无需使用诸如 bouncy castle 之类的第 3 方库——我无法使用。所以我必须把它解析出来,这不是什么大问题。唯一让它有点棘手的是CN并不总是被格式化为<first name> <last name>。通常情况下,它实际上是<last name>, <first name> <middle initial>。因此,在上面的示例中,CN 可以是 Jimmy Blooptoop 或 Blooptoop, Jimmy J(当然是 Joop 的缩写)。
在阅读了有关正则表达式的内容后,我写了以下内容,效果很好:
Matcher m = Pattern.compile("CN=[A-Za-z]*[, ]*[ A-Za-z]*").matcher(dn);
if (m.find())
cn = m.group();
我只是好奇是否有一些看起来不像废话的表达方式。我相当有信心,因为我只是在阅读了正则表达式的介绍后解决了这个问题。
【问题讨论】: