guanzhi / GmSSL

支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱
http://gmssl.org
Apache License 2.0
5.16k stars 1.66k forks source link

sm2_encrypt 加密后的数据经过Base64产生\r\n回车换行问题 #1417

Closed shentu521 closed 1 year ago

shentu521 commented 1 year ago

再使用官方的demo中我们发现,使用: sm2_encrypt 通过公钥以及加密的msg,得到结果后,然后经过base64编码,得到的数据会有\r\n字符串这样的字符串经过GB35114协议的传输,会导致某些设备无法解析头部,特别是使用pjsip开源库的项目.

shentu521 commented 1 year ago

sm2_encrypt,会把加密后的数据存储为der, SM2_CIPHERTEXT 结构体 typedef struct { SM2_POINT point; uint8_t hash[32]; uint8_t ciphertext_size; uint8_t ciphertext[SM2_MAX_PLAINTEXT_SIZE]; } SM2_CIPHERTEXT; 分别对应的是c1,c2,c3吗?

C1是生成随机数的计算出的椭圆曲线点,C2是密文数据,C3是SM3的摘要值

guanzhi commented 1 year ago

再使用官方的demo中我们发现,使用: sm2_encrypt 通过公钥以及加密的msg,得到结果后,然后经过base64编码,得到的数据会有\r\n字符串这样的字符串经过GB35114协议的传输,会导致某些设备无法解析头部,特别是使用pjsip开源库的项目.

目前Base64编码会自动生成换行