Sun Yimin

Results 32 comments of Sun Yimin

如果你的未加密私钥符合RFC 5915,那么可以用: ``` /* from RFC 5915 ECPrivateKey ::= SEQUENCE { version INTEGER, -- value MUST be (1) privateKey OCTET STRING, -- big endian encoding of integer 这里不是以INTEGER编码的,因此长度固定 parameters [0]...

你这个a0部分(tag 0)就是ECPrivateKey的 ``` parameters [0] EXPLICIT ECParameters OPTIONAL, -- ONLY namedCurve OID is permitted, by RFC 5480 -- MUST always include this field, by RFC 5915 ``` 部分,绝大部分实现应该包含这个值。当然,如果解析功能做得兼容性好一点,也能解析。 https://github.com/guanzhi/GmSSL/blob/cfdcd0c0e3049ea86289f0be0b43372a69205494/src/sm2_key.c#L216 ```c...

项目源代码啊include/gmssl/sm2.h。当然目前不加密的私钥封装主要也就这两种:RFC 5915/SEC1,pkcs#8。

有现成工具就用现成工具,没有的话,用第三方库写几行代码。 ``` -----BEGIN PRIVATE KEY----- MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgvGHyWej6oup0n/uv GTINk4ccmsjDSuN1E2vPONszsD+hRANCAAQQTvMFG5uPwznbyeVWfo5Vrj9IAnUZ Ja6BFMbS17QqQo3l+23LHNuhedQ/NVc2CkZzcZn4W+jNe8uflNIwkTz0 -----END PRIVATE KEY----- ```

你可以参考 https://github.com/emmansun/gmsm/blob/main/pkcs8/example_test.go ,先Parse 后 Marshal。

@lpilp 不是给你解释过了吗?https://github.com/guanzhi/GmSSL/blob/cfdcd0c0e3049ea86289f0be0b43372a69205494/src/sm2_key.c#L596

关于**pbeWithMD5AndDES-CBC**, #1635 不是已经解释了吗?你这种老旧私钥是怎么产生的?遗留系统?

目前这个项目的pkcs#8只支持pkcs#5 v2(pbkdf2和pbes2), 不支持老旧的pkcs#5 v1.5(pbeWithMD5AndDES-CBC属于pbes1)。你可以先用诸如openssl先对自己的当前私钥文件转换一下。

关于加密软件性能,我尝试从以下几个方面解释: * 纯语言,这方面肯定是有差距的:譬如是编译型还是解释型、自己管理内存还是语言托管等等。 * 算法(不考虑CPU架构),这方面差距也是有的,而且差距有可能比较大,好的算法能大大提高性能。 * 针对CPU架构的优化,这方面差距很大。 当然性能是一方面,安全性也非常重要,实现最好是做到常量时间运行,也就是说运行性能和密钥等机密信息的长短、大小等不产生关系,以防侧信道攻击。 所以,选择密码软件,最好能进行相关方面的测试,开源是好的选择,因为你能看到实现细节、判断实现的安全性(当然需要一定的知识)。闭源软件,一个是进行针对性测试,另外一个,如有条件,购买之前最好请第三方进行独立审计,或者有“权威”机构的检测报告。

@johnshajiang 没有看过。Go语言的话可以考虑使用emmansun/gmsm。