首页 / 算法 / OpenSSL RSA加解密算法
OpenSSL RSA加解密算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了OpenSSL RSA加解密算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2406字,纯文字阅读大概需要4分钟。
内容图文
![OpenSSL RSA加解密算法](/upload/InfoBanner/zyjiaocheng/761/d2f4f63405e54481bf195f8609a868e1.jpg)
在网上找了很多RSA算法的代码都是不完整或有问题的,只好自己写了。
其实很简单,PEM_read_bio_RSA_PUBKEY和PEM_read_bio_RSAPrivateKey这两个函数分别从内存中读取公钥和私钥,可以事先用openssl工具或在线工具生成。但要注意不能写错任何一个字符且每64个字符要加换行,否则会报错。
C代码如下:
#include "stdafx.h"
#include <windows.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
#pragma comment(lib,"libssl.lib")
#pragma comment(lib,"libcrypto.lib")
int main(void)
{
char *in = "hello world";
//BIO* bio = NULL;
const char *pubKey = "-----BEGIN PUBLIC KEY-----\n MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpHxVLdv9g8PqGCYTe6Y6bv5tc\n Lwwd5pBSZUWT9/iPArSYlOkQoYuhaYp2YkCIDfs6IQV2A4h2bMwrbRjF8Md7nbwx\n Oy7w4xIsoC8XdyzOkjm78AhdcvFQQVevT+BBnMtvPrrkMTAfpJzt/zWNv1ufOpiy\n v4AqyU6H24xFvyPfRQIDAQAB \n----- END PUBLIC KEY-----\n";
//此处大坑,END PUBLIC KEY前面的\n不能写在前一行的结尾,否则报错,不知道什么原因
const char *priKey = "-----BEGIN RSA PRIVATE KEY-----\n MIICXQIBAAKBgQDpHxVLdv9g8PqGCYTe6Y6bv5tcLwwd5pBSZUWT9/iPArSYlOkQ\n oYuhaYp2YkCIDfs6IQV2A4h2bMwrbRjF8Md7nbwxOy7w4xIsoC8XdyzOkjm78Ahd\n cvFQQVevT+BBnMtvPrrkMTAfpJzt/zWNv1ufOpiyv4AqyU6H24xFvyPfRQIDAQAB\n AoGBAIeSVQ8DEDdvTTJgHM6KIy4+evpcPf6xlGLmlFUeE4YPu7k0eGn8mLhxKV35\n e6/j+aNvir58BYNheEcU9iA/C7Ki/5rWX+ayrDUmHfV9hm0Lb3+2JLyTd6v4fwo4\n pA/VEkED3OCgqFwlVeXa+VZ2Az/OnBrjm08HBrimq2h54DLhAkEA9Iea83K9XIca\n fRSkLPmetoM+qgQT7VXYOpZznyytqeaf0Z3v7yDKeECBYo2H4B5Juw39dkKnvR1m\n o1GKoF4RXQJBAPQOe7w7+cwENfS8biXvptd/arC5gOM+2NXh//xz0Xe7kyeswk0V\n FWs3meJuC/Y9dnqec8/fMjN+dpaidWP3HwkCQQDzh539ONd4MCFkUstS82Nql3kw\n L5F8+9K2PqJ18zQdkk62n5mWSMz8SBnTgerBfMinXz5/qdCOWpqeqpXqMuUNAkAG\n 53n8oz231c6o88Ox8wunQQWFplnNE/QSaOhS/fvJBVduYebFQ3ltpQ8HZtGTz71Q\n Trc8BDZpWoSEUmg7wbvxAkAZRhiPNN1nV/Aja4D+/g5egtKzB6krSxhtREjp8pfL\n m+h5JQKR79oj6OBX/ntdKV/RNxgCFyvnrQOCAlO7Q2vF \n-----END RSA PRIVATE KEY-----\n";
BIO* pubBio = BIO_new_mem_buf(pubKey, -1);
RSA* pubRsa = PEM_read_bio_RSA_PUBKEY(pubBio, NULL, NULL, NULL);
char *en[512] = { 0 };
RSA_public_encrypt(strlen(in), (unsigned char*)in, (unsigned char*)en, pubRsa, RSA_PKCS1_PADDING);
printf("加密:%s\n", en);
BIO* priBIO = BIO_new_mem_buf(priKey, -1);
RSA* priRsa = PEM_read_bio_RSAPrivateKey(priBIO, NULL, NULL, NULL);
char de[512] = { 0 };
RSA_private_decrypt(RSA_size(priRsa), (unsigned char*)en, (unsigned char*)de, priRsa, RSA_PKCS1_PADDING);
printf("解密:%s", de);
RSA_free(pubRsa);
RSA_free(priRsa);
getchar();
return 0;
}
内容总结
以上是互联网集市为您收集整理的OpenSSL RSA加解密算法全部内容,希望文章能够帮你解决OpenSSL RSA加解密算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。