-
Notifications
You must be signed in to change notification settings - Fork 91
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SM2加密后是30开头的,但是后台需要04开头的 这个可以转换么 #78
Comments
将密文 ASN1 解码即可,查看 Readme 文档或 Demo 示例。
|
04 代表非压缩格式,解码出来默认不带 04,后端需要,手动拼接加上 04 即可。 |
这个解出来和后台的的对不上 |
加密后公钥: |
初始公钥: ==> 公钥 加密后公钥:==> 加密密文 解密后公钥: ==> 结果 |
解密后公钥: ==> 结果 这两个是密文解密后预期结果 |
|
好的,谢谢 |
为什么,我用自己生成的公钥(代码里那个生成公私钥的方法)去加密,然后自己生成的私钥解密,然后会崩溃啊 |
NSString *pubKey = @"0408E3FFF9505BCFAF9307E665E9229F4E1B3936437A870407EA3D97886BAFBC9" |
你在 Demo 中测试一下你的代码,如果无错误,大概率是项目中的 OpenSSL 版本低导致,低于OpenSSL 1.1.1l 的版本。
- if (!sm2_plaintext_size(key, digest, ctext_len, &ptext_len)) {
+ if (!sm2_plaintext_size(cipher_bytes, ctext_len, &ptext_len)) { 注意:OpenSSL 1.1.1l 前后此 API 方法 |
我是昨天直接使用pod GMObjC的,我看到pods里面有GMObjC和GMOpenSSL这两个文件包的。我刚才使用openssl version 这个代码在终端中看到LibreSSL 3.3.6 这个版本咋这么高啊,是不是不对啊 |
|
是的,你得demo没问题,我刚运行了,是可以的,我排查下项目中的openSSL,刚看到一个-framework "OpenSSL"的,这个我改成-Objc-l"GMObjC" -framework "OpenSSL"就可以了吧 |
还是报错,我执行了pod GMObjC 和 pod GMOpenSSL(是3.0.5)版本的(OpenSSL)这次应该是高于1.1.1l了吧,不是3.0.8,这个版本应该没问题的吧,为啥还是解密报错,还是那个错误, |
你好,大哥,还是不行啊,我直接pod GMOpenSSL了,去掉pod GMObjC了,然后把GMSm2Utils这几个文件,拉到我项目中去了,为啥还是崩溃到那个地方啊,我全局搜索了OpenSSL,没有用到啊,但是在OTHER_LDFLAGS里有一个-framework”OpenSSL”,我有集成baidumapki但是没用,我改怎么做才能升级OpenSSL然后不崩溃啊
发自我的iPhone
…------------------ 原始邮件 ------------------
发件人: CocoaFei ***@***.***>
发送时间: 2024年11月5日 15:36
收件人: muzipiao/GMObjC ***@***.***>
抄送: xiaohuiLoveming ***@***.***>, Comment ***@***.***>
主题: Re: [muzipiao/GMObjC] SM2加密后是30开头的,但是后台需要04开头的 这个可以转换么 (Issue #78)
你是在 Mac 电脑终端里执行的openssl version吧?电脑的的 OpenSSL 版本和项目没有一毛钱关系,Mac电脑自带的一般是LibreSSL 3.3.6;
OpenSSL 版本低,我指的项目里面可能存在多个 OpenSSL,执行代码时调用的是低版本的 OpenSSL;
你把 GMObjC 项目下载下来,或者新建一个干净的 Demo,你上面的代码运行应该算没问题的。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
大哥,必须OpenSSL 是1.1.1l以上吗?1.1.1g不行吗?
发自我的iPhone
…------------------ 原始邮件 ------------------
发件人: CocoaFei ***@***.***>
发送时间: 2024年11月5日 15:36
收件人: muzipiao/GMObjC ***@***.***>
抄送: xiaohuiLoveming ***@***.***>, Comment ***@***.***>
主题: Re: [muzipiao/GMObjC] SM2加密后是30开头的,但是后台需要04开头的 这个可以转换么 (Issue #78)
你是在 Mac 电脑终端里执行的openssl version吧?电脑的的 OpenSSL 版本和项目没有一毛钱关系,Mac电脑自带的一般是LibreSSL 3.3.6;
OpenSSL 版本低,我指的项目里面可能存在多个 OpenSSL,执行代码时调用的是低版本的 OpenSSL;
你把 GMObjC 项目下载下来,或者新建一个干净的 Demo,你上面的代码运行应该算没问题的。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
|
谢谢大哥
发自我的iPhone
…------------------ 原始邮件 ------------------
发件人: CocoaFei ***@***.***>
发送时间: 2024年11月6日 10:46
收件人: muzipiao/GMObjC ***@***.***>
抄送: xiaohuiLoveming ***@***.***>, Comment ***@***.***>
主题: Re: [muzipiao/GMObjC] SM2加密后是30开头的,但是后台需要04开头的 这个可以转换么 (Issue #78)
版本排序abcdefghijklmnopqrstuvwxyz,g 的版本比 l 低;
GMObjC 仅仅是对 OpenSSL 中的国密加密封装,GMObjC 文件中的源码可自行修改;
最简单的方法是共用项目的 1.1.1g,将 GMObjC 文件夹拖入项目集成源码,还原sm2_plaintext_size方法即可;
另外一种方法是编译 GMObjC 为动态库,项目保留2套OpenSSL库(注意使用GMOpenSSL 2.2.9静态库版本),可参考#100。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
No description provided.
The text was updated successfully, but these errors were encountered: