gpt4 book ai didi

parsing - 如何使用 Go 从专有名称中提取通用名称?

转载 作者:IT王子 更新时间:2023-10-29 02:10:17 26 4
gpt4 key购买 nike

我有一个来自 X.509 证书的 x509 证书的主题专有名称 (DN)。我想从中提取通用名称 (CN)。有没有办法通过 crypto/x509 或 Go 中的任何其他库来实现?

例如,如果主题的专有名称是:

CN=AMA AMI SA APB MDE MADB MDS LE.AXVD-04954-19-17.,OU=Abc,O=DA.CB.AcbDinema.com,dnQualifier=PY0aT8abfcQeUyquTe4w5RVasfY=

然后我想从中提取公用名 (CN) 部分 (AMA AMI SA APB MDE MADB MDS LE.AXVD-04954-19-17.)。

最佳答案

Go 标准库中没有任何东西可以为您解析它(它只处理 ASN.1 编码的专有名称),但您将它视为一个字符串并自己解析它。

这是一个使用正则表达式的例子。 警告:不能保证这在所有情况下都有效。例如,我见过小写 CN 的情况,或者顺序可能会改变,或者只是格式错误。

package main

import (
"fmt"
"regexp"
"strings"
)

func main() {
subjectString := "CN=AMA AMI SA APB MDE MADB MDS LE.AXVD-04954-19-17.,OU=Abc,O=DA.CB.AcbDinema.com,dnQualifier=PY0aT8abfcQeUyquTe4w5RVasfY="
re := regexp.MustCompile("CN=([^,]+)")
matches := re.FindStringSubmatch(subjectString)

fmt.Println(matches[1])

commonNameParts := strings.Split(matches[1], " ")
fmt.Println(commonNameParts)
}

输出完整的 CN 字符串和 CommonName 各个组件的一部分:

AMA AMI SA APB MDE MADB MDS LE.AXVD-04954-19-17.
[AMA AMI SA APB MDE MADB MDS LE.AXVD-04954-19-17.]

关于parsing - 如何使用 Go 从专有名称中提取通用名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48565232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com