当前位置:   article > 正文

在openssl中对SM2的公私钥进行加解密的验证_sm2_plaintext_size 45421_1_1dexist::function:sm2

sm2_plaintext_size 45421_1_1dexist::function:sm2

在上一篇文章中《通过openssl生成sm2的公私钥的方法》介绍了如何在openssl系统中生成公私钥对,如何对生成的公私钥对进行验证呢?

在ecparam.c中,添加加解密的代码就可以了,还在《通过openssl生成sm2的公私钥的方法》添加公钥的地方,432行,在生成公钥之后,添加代码如下:

  1. i = PEM_write_bio_ECPrivateKey(out, eckey, NULL,
  2. NULL, 0, NULL, NULL);//生成私钥
  3. //以下为添加代码
  4. i = PEM_write_bio_EC_PUBKEY(out, eckey);//生成公钥
  5. const char *message = "encryption test data";//测试数据
  6. const size_t msg_len = strlen(message);
  7. printf("%s\n",message);
  8. uint8_t *ctext = NULL;
  9. size_t ctext_len = 0;
  10. const EVP_MD *digest=EVP_sm3();//摘要方法是sm3
  11. sm2_ciphertext_size(eckey, digest, msg_len, &ctext_len);
  12. ctext = OPENSSL_zalloc(ctext_len);
  13. sm2_encrypt(eckey, digest, (const uint8_t *)message, msg_len,
  14. ctext, &ctext_len);//加密
  15. printf("%s\n",ctext);//加密后数据
  16. uint8_t *recovered = NULL;
  17. size_t recovered_len = msg_len;
  18. size_t ptext_len = 0;
  19. sm2_plaintext_size(eckey, digest, ctext_len, &ptext_len);
  20. recovered = OPENSSL_zalloc(ptext_len);
  21. sm2_decrypt(eckey, digest, ctext, ctext_len, recovered, &recovered_len);//解密
  22. printf("%s\n",recovered);//解密后的数据

然后在ecparam.c中添加sm2的头文件

# include "internal/sm2.h"

在apps下面的build.info中添加crypto的依赖

  1. INCLUDE[openssl]=.. ../include ../crypto/include
  2. DEPEND[openssl]=libapps.a ../libcrypto.a ../libssl

在openssl目录下,make

然后在apps下面执行

./openssl ecparam -name SM2 -genkey

输出如下:

  1. -----BEGIN EC PARAMETERS-----
  2. BgUrgQQAIA==
  3. -----END EC PARAMETERS-----
  4. -----BEGIN EC PRIVATE KEY-----
  5. MGkCAQEEHQDyYYowd8TUhF3XiXX9R0XRsvTkNaVFYcJGR/6CoAcGBSuBBAAgoTwD
  6. OgAEkq2eq2oLsAnQ4n4Rd00Y6ppaj+8oCc5C0x5k4JktJemrBFJdkDoPLJrQWRFa
  7. Mc4FiQ+i33LFE44=
  8. -----END EC PRIVATE KEY-----
  9. -----BEGIN PUBLIC KEY-----
  10. ME4wEAYHKoZIzj0CAQYFK4EEACADOgAEkq2eq2oLsAnQ4n4Rd00Y6ppaj+8oCc5C
  11. 0x5k4JktJemrBFJdkDoPLJrQWRFaMc4FiQ+i33LFE44=
  12. -----END PUBLIC KEY-----
  13. encryption test data
  14. 0uD�mߪ4����~|Fi�o���2�Xں:��
  15. encryption test data

在加密前和加密后的数据均为,encryption test data,完成验证。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/118201
推荐阅读
相关标签
  

闽ICP备14008679号