Comments (20)
GMTestKit.exe 加密的数据是c1c2c3字节拼接的,没有加前缀。根据标准是需要有前缀的
gmssl加密后的数据是用的asn1编码的,需要转换才能互通
可以看下这个测试逻辑 test
from gmssl.
gmssl生成的是 asn1(c1x,c1y,c3,c2), 要互相验证得进行格式转换
麻烦请问一下具体 怎么进行转换呢?有相关代码参考吗?c1x和c1y怎么转换成C1? asn1数据解码后转换?
可以看一下这个函数sm2_ciphertext_from_der
已经解决了,最后发现DER数据里面包含了长度数据其实数据构成是asn1(长度+C1.x+C1.y+C3+C2),被这个长度整惨了....后来我这边直接C1.x+C1.y+C3+C2=C1+C3+C2就好了
from gmssl.
国密局标准是C1C3C2的顺序
from gmssl.
@zzl360 那为什么用GMSSL 3.1.1的原生代码(按照C1 C3 C2顺序)在https://the-x.cn/cryptography/Sm2.aspx (下拉选C1+C3+C2、 SM3) 解密,报”无效密文或密钥错误,C1 Invalid“,这个是啥原因?
没有修改过的GMSSL3.1.1就是国密局标准C1C3C2顺序的,为什么https://the-x.cn/cryptography/Sm2.aspx上面解不了密?谢谢
from gmssl.
gmssl生成的是 asn1(c1x,c1y,c3,c2), 要互相验证得进行格式转换
from gmssl.
gmssl生成的是 asn1(c1x,c1y,c3,c2), 要互相验证得进行格式转换
麻烦请问一下具体 怎么进行转换呢?有相关代码参考吗?c1x和c1y怎么转换成C1? asn1数据解码后转换?
from gmssl.
gmssl生成的是 asn1(c1x,c1y,c3,c2), 要互相验证得进行格式转换
麻烦请问一下具体 怎么进行转换呢?有相关代码参考吗?c1x和c1y怎么转换成C1? asn1数据解码后转换?
可以看一下这个函数sm2_ciphertext_from_der
from gmssl.
gmssl生成的是 asn1(c1x,c1y,c3,c2), 要互相验证得进行格式转换
麻烦请问一下具体 怎么进行转换呢?有相关代码参考吗?c1x和c1y怎么转换成C1? asn1数据解码后转换?
可以看一下这个函数sm2_ciphertext_from_der
已经解决了,最后发现DER数据里面包含了长度数据其实数据构成是asn1(长度+C1.x+C1.y+C3+C2),被这个长度整惨了....后来我这边直接C1.x+C1.y+C3+C2=C1+C3+C2就好了
不能直接这么弄呢,得用函数解出来,c1x,c1y是大int型,有小概率大小不一致,可能补了0或是去了0,得注意,c1c3c2里c1的长度是hex的话是128字节,有些前面有04就是130字节,asn1后的c1x,c1y 的hex可能就不是都是64字节,得用你所用的asn1函数去decode解开, 并将c1x,c1y补齐为hex的64字节长度,
from gmssl.
gmssl生成的是 asn1(c1x,c1y,c3,c2), 要互相验证得进行格式转换
麻烦请问一下具体 怎么进行转换呢?有相关代码参考吗?c1x和c1y怎么转换成C1? asn1数据解码后转换?
可以看一下这个函数sm2_ciphertext_from_der
已经解决了,最后发现DER数据里面包含了长度数据其实数据构成是asn1(长度+C1.x+C1.y+C3+C2),被这个长度整惨了....后来我这边直接C1.x+C1.y+C3+C2=C1+C3+C2就好了
不能直接这么弄呢,得用函数解出来,c1x,c1y是大int型,有小概率大小不一致,可能补了0或是去了0,得注意,c1c3c2里c1的长度是hex的话是128字节,有些前面有04就是130字节,asn1后的c1x,c1y 的hex可能就不是都是64字节,得用你所用的asn1函数去decode解开, 并将c1x,c1y补齐为hex的64字节长度,
我在asn1之前提取的数据,我这边考虑后续就不转ASN1了,直接把这几块内存复制一下。您帮忙看一下方案可行吗? 这些长度问题的解决有相关代码参考吗?主要是很多第三方工具不用ASN1,那非ASN1数据怎么组装和解析呢?
from gmssl.
这种固定长度的截了不行呢, 按 zzl360 说的那个 sm2_ciphertext_from_der 来 解析, 还有可以去asn1的编码方式,就会了解为什么不行了
from gmssl.
这种固定长度的截了不行呢, 按 zzl360 说的那个 sm2_ciphertext_from_der 来 解析, 还有可以去asn1的编码方式,就会了解为什么不行了
您看我的实现是在ASN1调用之前截取的内存数据,此时数据还没有进行ANS1编码。后续的解密我们全部不让ASN1参与可以吗?比如您看这个网站他加密后的数据就没用ASN1编码?您的意思的解码ANS1,我的想法是就不用ANS1编码推进后续动作。您觉得可行吗?
https://the-x.cn/cryptography/Sm2.aspx
from gmssl.
这种固定长度的截了不行呢, 按 zzl360 说的那个 sm2_ciphertext_from_der 来 解析, 还有可以去asn1的编码方式,就会了解为什么不行了
您看我的实现是在ASN1调用之前截取的内存数据,此时数据还没有进行ANS1编码。后续的解密我们全部不让ASN1参与可以吗?
直接把c1c3c2的字节组合起来没有问题的,对接java的bc库的话是没问题,其他语言的话以标准编码需要添加前缀
from gmssl.
这种固定长度的截了不行呢, 按 zzl360 说的那个 sm2_ciphertext_from_der 来 解析, 还有可以去asn1的编码方式,就会了解为什么不行了
您看我的实现是在ASN1调用之前截取的内存数据,此时数据还没有进行ANS1编码。后续的解密我们全部不让ASN1参与可以吗?
直接把c1c3c2的字节组合起来没有问题的,对接java的bc库的话是没问题,其他语言的话以标准编码需要添加前缀
您说的前缀是指长度吗?我看源码就是在一开始把长度编码进去了。
from gmssl.
这种固定长度的截了不行呢, 按 zzl360 说的那个 sm2_ciphertext_from_der 来 解析, 还有可以去asn1的编码方式,就会了解为什么不行了
您看我的实现是在ASN1调用之前截取的内存数据,此时数据还没有进行ANS1编码。后续的解密我们全部不让ASN1参与可以吗?
直接把c1c3c2的字节组合起来没有问题的,对接java的bc库的话是没问题,其他语言的话以标准编码需要添加前缀
您说的前缀是指长度吗?我看源码就是在一开始把长度编码进去了。
不是长度,是未压缩的前缀,通常以数字4作为前缀。对接java的bc库就不用加前缀
from gmssl.
这种固定长度的截了不行呢, 按 zzl360 说的那个 sm2_ciphertext_from_der 来 解析, 还有可以去asn1的编码方式,就会了解为什么不行了
您看我的实现是在ASN1调用之前截取的内存数据,此时数据还没有进行ANS1编码。后续的解密我们全部不让ASN1参与可以吗?
直接把c1c3c2的字节组合起来没有问题的,对接java的bc库的话是没问题,其他语言的话以标准编码需要添加前缀
您说的前缀是指长度吗?我看源码就是在一开始把长度编码进去了。
from gmssl.
这种固定长度的截了不行呢, 按 zzl360 说的那个 sm2_ciphertext_from_der 来 解析, 还有可以去asn1的编码方式,就会了解为什么不行了
您看我的实现是在ASN1调用之前截取的内存数据,此时数据还没有进行ANS1编码。后续的解密我们全部不让ASN1参与可以吗?
直接把c1c3c2的字节组合起来没有问题的,对接java的bc库的话是没问题,其他语言的话以标准编码需要添加前缀
您说的前缀是指长度吗?我看源码就是在一开始把长度编码进去了。
asn1 没有前缀,字节拼接的有。给你说的一直是字节拼接
from gmssl.
这种固定长度的截了不行呢, 按 zzl360 说的那个 sm2_ciphertext_from_der 来 解析, 还有可以去asn1的编码方式,就会了解为什么不行了
您看我的实现是在ASN1调用之前截取的内存数据,此时数据还没有进行ANS1编码。后续的解密我们全部不让ASN1参与可以吗?
直接把c1c3c2的字节组合起来没有问题的,对接java的bc库的话是没问题,其他语言的话以标准编码需要添加前缀
您说的前缀是指长度吗?我看源码就是在一开始把长度编码进去了。
asn1 没有前缀,字节拼接的有。给你说的一直是字节拼接
前缀里面放什么数据?这块有标准吗?不好意思我在多麻烦您一下,C1长度固定32,C3长度32,C2长度不定。那通过总长度-C1长度-C3长度=C2长度。前缀要弄啥?
from gmssl.
是的,参考http://www.gmbz.org.cn/main/viewfile/2018011001400692565.html ,GM/0009-2012 SM2 密码算法使用规范。
from gmssl.
是的,参考http://www.gmbz.org.cn/main/viewfile/2018011001400692565.html ,GM/0009-2012 SM2 密码算法使用规范。
我以为GM这块大家都统一了,没想到....感谢提醒。
from gmssl.
gmssl生成的是 asn1(c1x,c1y,c3,c2), 要互相验证得进行格式转换
麻烦请问一下具体 怎么进行转换呢?有相关代码参考吗?c1x和c1y怎么转换成C1? asn1数据解码后转换?
可以看一下这个函数sm2_ciphertext_from_der
已经解决了,最后发现DER数据里面包含了长度数据其实数据构成是asn1(长度+C1.x+C1.y+C3+C2),被这个长度整惨了....后来我这边直接C1.x+C1.y+C3+C2=C1+C3+C2就好了
不能直接这么弄呢,得用函数解出来,c1x,c1y是大int型,有小概率大小不一致,可能补了0或是去了0,得注意,c1c3c2里c1的长度是hex的话是128字节,有些前面有04就是130字节,asn1后的c1x,c1y 的hex可能就不是都是64字节,得用你所用的asn1函数去decode解开, 并将c1x,c1y补齐为hex的64字节长度,
我刚刚去看了DER编码我明白你说的了,c1x和c1y DER编码然后在解密后长度不一定是64字节。如果长度不是64字节需要咱们自己补齐。另外DER编码一开是编码的时候算长度是为了把4个参数编码成结构体类型。多谢。
from gmssl.
Related Issues (20)
- 有没有对应的JS版本SM2算法呢? HOT 3
- 多线程使用同一个tls1.3加国密套件的socket发送数据,接受端解密发送过来的数据可能会报错 HOT 3
- windows 下 vs2010 nmake 报错 HOT 2
- SM9 SSL通信
- SM2加密时是否支持指定密文格式?
- X509v3 Subject Alternative Name
- VS2010下编译GmSSL报 error C2065: '__func__' : undeclared identifier 错误
- 请问gmssl 怎么和 boost asio 集成呢?
- 请推荐一些国内比较流行的国密 密码卡 和 ukey
- 请问这里TLCP记录层是不是没有分片
- SM4 GCM加解密中J0之后的CTR问题 HOT 7
- GmSSL V2生成的密钥文件,能用GmSSL V3的命令行打开吗?
- gmssl 3.0密钥文件生成,能否生成仅带有privateKey的信息
- gmssl 3.0的密钥文件,能否以-----BEGIN PRIVATE KEY-----开头,以-----END PRIVATE KEY-----结尾
- 无密码的私钥key,怎么读取 HOT 5
- 解析加密的私钥key失败 HOT 1
- SM2密钥对封装格式,概率性无法解密 HOT 4
- [2.0版本考古求助,3.0已解决]gmssl 2.0产生带密码的私钥怎么提取未加密的私钥出来啊? HOT 13
- Intel芯片的Mac版本下,编译出错 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gmssl.