HarmonyOS 鸿蒙Next 证书解析后CN怎么获取且中文

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 证书解析后CN怎么获取且中文

let CNData = x509Cert.getSubjectName().data; let CN = this.parseCN(CNData) Logger.info(‘CN=:’, CN.toString());  parseCN = (data:Uint8Array):string=>{ let decodeWithStreamOptions: util.DecodeWithStreamOptions = { stream: false } let textDecoderOptions: util.TextDecoderOptions = { fatal: false, ignoreBOM : true } let textDecoder = util.TextDecoder.create(‘utf-8’, textDecoderOptions); return textDecoder.decodeWithStream(data , decodeWithStreamOptions); }  控制台输出 CN=:, /C=CN/ST=\xE6\xB5***\x9F/O=\xE6\xB5\x99**\x9F\xE7\x9C\x81\xE6\xB1\x87\xE4\xBF\xA1\xE6\xB5\x8B\xE8\xAF\x95\xE7\x94\xA8\xE4\xBC\x81\xE4\xB8\x9A/CN=\xE6\xB5\x99\xE6\xB1\x9F****\x81\xE6\xB1\x87\xE4\xBF\xA1\xE6\xB5\x8B\xE8\xAF\x95\xE7\x94\xA8\xE4\xBC\x81\xE4\xB8\x9A   怎么取里面的cn值 并且是中文


更多关于HarmonyOS 鸿蒙Next 证书解析后CN怎么获取且中文的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

根据咨询你的问题 像是 string 转 Uint8Array的问题 可以尝试转一下试试

static stringToUint8Array(str: string): Uint8Array {

    if (!str) {

        logger.error('stringToUint8Array', 'params error');

        throw new Error('stringToUint8Array, params error');

    }

    let arr: number[] = [];

    for (let i = 0; i < str.length; ++i) {

        arr.push(str.charCodeAt(i));

    }

    return new Uint8Array(arr);

}

如下处理可以获得中文,但CN的值,还需要自行分割截取出来,如果很影响开发,也可以试着重新提个需求单。

const formatStr = buffer.from(CNData).toString().replace(/\\/g, '\\');

    const res = decodeURIComponent(formatStr.replace(/\\x/g, '%'))

    console.log('CN=:' + res);

更多关于HarmonyOS 鸿蒙Next 证书解析后CN怎么获取且中文的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,解析证书并获取CN(Common Name)且以中文显示,可以通过以下步骤实现:

首先,从证书中获取Subject Name的原始数据:

let CNData = x509Cert.getSubjectName().data;

接着,定义一个解析函数,将原始数据解码为UTF-8格式的字符串:

parseCN = (data: Uint8Array): string => {
  let textDecoder = new TextDecoder('utf-8', { fatal: false, ignoreBOM: true });
  return textDecoder.decode(data);
}
let CN = parseCN(CNData);

此时,CN变量中存储的即为解码后的字符串,可能包含诸如/C=CN/ST=.../O=.../CN=...等字段。为了提取出CN字段的中文值,可以使用正则表达式或字符串处理函数进行分割和提取。

例如,使用正则表达式提取CN字段后的值:

let cnMatch = CN.match(/CN=([^/]+)/);
let cnValue = cnMatch ? cnMatch[1] : '';

cnValue即为所需的CN的中文值。

请注意,上述代码是基于JavaScript的示例,实际开发中可能需要根据具体的编程语言和库进行调整。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部