公私钥转换成十六进制形式
来源:互联网 发布:dnf面板数据怎么看 编辑:程序博客网 时间:2024/06/07 09:02
在一些情况下,我们需要将公私钥由pem格式转换成十六进制来提供给第三方进行使用,openssl没有提供命令行的转换方式,其中实现接口如下:
私钥转换为16进制为:
bool ConvertPriPEMtoHex(const std::string& pem_private_key, std::string& HexKey){ EVP_PKEY *pri_key = NULL; BIO *bio_private_key = NULL; bio_private_key = BIO_new_mem_buf((char*)pem_private_key.c_str(), pem_private_key.size()); PEM_read_bio_PrivateKey(bio_private_key, &pri_key, NULL, NULL); EC_KEY *ec_key = pri_key->pkey.ec; if (!ec_key) return false; BIGNUM *private_key; private_key = BN_new(); private_key = (BIGNUM*)EC_KEY_get0_private_key(ec_key); HexKey = BN_bn2hex(private_key); BN_free(private_key); BIO_free(bio_private_key); return true;}
bool ConvertPubPEMtoHex(const std::string& pem_public_key, std::string& HexKey){ EVP_PKEY *pri_key = NULL; BIO *bio_cert = NULL; X509 *encrypt_cert = NULL; EVP_PKEY *key = NULL; bio_cert = BIO_new_mem_buf((char *)pem_public_key.c_str(), pem_public_key.size()); PEM_read_bio_X509(bio_cert, &encrypt_cert, NULL, NULL); if (!encrypt_cert) return false; key = X509_get_pubkey(encrypt_cert); if (!key) return false; EC_KEY *ec_key = key->pkey.ec; if (!ec_key) return false; EC_POINT *pub_key; unsigned char pubbuf[1024] = { 0 }; pub_key = (EC_POINT*)EC_KEY_get0_public_key(ec_key); EC_GROUP* group = (EC_GROUP*)EC_KEY_get0_group(ec_key); int buflen = EC_POINT_point2oct(group, pub_key, EC_KEY_get_conv_form(ec_key), pubbuf, sizeof(pubbuf), NULL); BIGNUM *pub_key_BIGNUM; pub_key_BIGNUM = BN_new(); BN_bin2bn(pubbuf, buflen, pub_key_BIGNUM); HexKey = BN_bn2hex(pub_key_BIGNUM); BN_free(pub_key_BIGNUM); BIO_free(bio_cert); return true;}
0 0
- 公私钥转换成十六进制形式
- 字符串形式十六进制数转换
- 一串十六进制以每两位形式转换成字符串
- 十进制转十六进制数字形式转换
- 怎么把已有的RSA公私钥转换成PKCS8格式
- 汇编:把寄存器AX的十六进制数转换成十进制形式输出
- 将以字符串形式给出的浮点数的十六进制形式转换成十进制形式(方法太麻烦,请各位大侠帮忙改进!)
- java RSA公私钥与其base64编码之间的转换
- java RSA公私钥与其base64编码之间的转换
- 字符串形式的十六进制与十进制互相转换
- 十六进制转换成字符串
- 中文转换成十六进制
- 十六进制转换成八进制
- 十六进制转换成十进制
- 十进制转换成十六进制
- RGB转换成十六进制
- 2138转换成十六进制
- 十进制转换成十六进制
- 微信小程序开发(一)
- 面试中经常出现的算法
- finished with non-zero exit value 1
- C# 可怜的冒泡排序!!!
- 阿里druid学习,号称最好的数据库连接池
- 公私钥转换成十六进制形式
- C#第二章课后作业2
- Qt中数据库操作
- 解决CC2540 XDATA内存不足
- Access restriction: The type 'Hashtable' is not API
- php的网络编程
- Avtivity的laucnmode模式用处
- PJSIP协议栈在Linux下通信测试
- 树结构练习——判断给定森林中有多少棵树