HarmonyOS鸿蒙Next中SM2签名结果如何der2Raw格式转换
HarmonyOS鸿蒙Next中SM2签名结果如何der2Raw格式转换 SM2签名结果 如何der2Raw格式转换
看下asn1-der三方库是否满足业务需求,参考文档示例:https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tree/master/asn1Demo#asn1-der
asn1-der三方库:https://ohpm.openharmony.cn/#/cn/detail/%40ohos%2Fasn1-der
更多关于HarmonyOS鸿蒙Next中SM2签名结果如何der2Raw格式转换的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,SM2签名结果的DER格式转换为RAW格式可以通过以下步骤实现:
-
解析DER格式:首先,需要解析DER格式的签名结果。DER格式的SM2签名通常包含两个整数r和s,它们被编码为ASN.1结构。
-
提取r和s:从解析后的ASN.1结构中提取出r和s的值。这两个值是SM2签名的核心部分。
-
拼接为RAW格式:将提取出的r和s按照固定的长度(通常为32字节)拼接起来,形成RAW格式的签名结果。如果r或s的长度不足32字节,需要在前面补零。
-
输出RAW格式:最终得到的RAW格式签名结果是一个64字节的字节数组,可以直接用于后续的处理或传输。
例如,假设DER格式的签名结果为30 44 02 20 [r] 02 20 [s],其中[r]和[s]分别是32字节的r和s值。提取出r和s后,直接拼接成64字节的RAW格式签名结果。
这个过程不需要依赖Java或C语言,可以直接在鸿蒙系统中使用相关的API或库来完成。
在HarmonyOS鸿蒙Next中,将SM2签名结果从DER格式转换为Raw格式,可以通过以下步骤实现:
- 解析DER格式:首先,使用
Asn1Decoder解析DER格式的签名,获取r和s两个大整数。 - 提取Raw数据:将
r和s分别转换为固定长度的字节数组(通常为32字节),并拼接在一起。 - 生成Raw格式:拼接后的字节数组即为Raw格式的签名结果。
示例代码:
byte[] derSignature = ...; // DER格式签名
Asn1Decoder decoder = new Asn1Decoder(derSignature);
BigInteger r = decoder.getInteger();
BigInteger s = decoder.getInteger();
byte[] rawSignature = new byte[64];
System.arraycopy(r.toByteArray(), 0, rawSignature, 0, 32);
System.arraycopy(s.toByteArray(), 0, rawSignature, 32, 32);

