openssl3.2 - 官方demo学习 - smime - smenc.c
文章目录
- openssl3.2 - 官方demo学习 - smime - smenc.c
- 概述
- 笔记
- END
openssl3.2 - 官方demo学习 - smime - smenc.c
概述
读取X509证书, 用PKCS7加密明文(证书 + 明文 + 3DES_CBC), 保存为MIME格式的密文
openssl API的命名含义
BIO_new_file
“new” a “file”, return a “BIO” object
PEM_read_bio_X509() Read a certificate in PEM format from a BIO
data format is “PEM”, “read” from “bio”, return a object type is “X509”
笔记
/*!
\file smenc.c
\note
openssl3.2 - 官方demo学习 - smime - smenc.c
读取X509证书, 用PKCS7加密明文(证书 + 明文 + 3DES_CBC), 保存为MIME格式的密文openssl API的命名含义BIO_new_file
"new" a "file", return a "BIO" objectPEM_read_bio_X509() Read a certificate in PEM format from a BIO
data format is "PEM", "read" from "bio", return a object type is "X509"
*//** Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved.** Licensed under the Apache License 2.0 (the "License"). You may not use* this file except in compliance with the License. You can obtain a copy* in the file LICENSE in the source distribution or at* https://www.openssl.org/source/license.html*//* Simple S/MIME encrypt example */
#include <openssl/pem.h>
#include <openssl/pkcs7.h>
#include <openssl/err.h>#include "my_openSSL_lib.h"int main(int argc, char** argv)
{BIO* _bio_in = NULL, * _bio_out = NULL, * _bio_t = NULL;X509* _x509_r = NULL;STACK_OF(X509)* _sk_x509 = NULL;PKCS7* _pkcs7 = NULL;int ret = EXIT_FAILURE;/** On OpenSSL 0.9.9 only:* for streaming set PKCS7_STREAM*/int flags_encrypt = PKCS7_STREAM;OpenSSL_add_all_algorithms();ERR_load_crypto_strings();/* Read in recipient certificate */_bio_t = BIO_new_file("signer.pem", "r");if (!_bio_t)goto err;_x509_r = PEM_read_bio_X509(_bio_t, NULL, 0, NULL);if (!_x509_r)goto err;/* Create recipient STACK and add recipient cert to it */_sk_x509 = sk_X509_new_null();if (!_sk_x509 || !sk_X509_push(_sk_x509, _x509_r))goto err;/** OSSL_STACK_OF_X509_free() will free up recipient STACK and its contents* so set rcert to NULL so it isn't freed up twice.*/_x509_r = NULL;/* Open content being encrypted */_bio_in = BIO_new_file("encr.txt", "r");if (!_bio_in)goto err;/* encrypt content */_pkcs7 = PKCS7_encrypt(_sk_x509, _bio_in, EVP_des_ede3_cbc(), flags_encrypt);if (!_pkcs7)goto err;_bio_out = BIO_new_file("smencr.txt", "w");if (!_bio_out)goto err;/* Write out S/MIME message */if (!SMIME_write_PKCS7(_bio_out, _pkcs7, _bio_in, flags_encrypt))goto err;ret = EXIT_SUCCESS;err:if (ret != EXIT_SUCCESS) {fprintf(stderr, "Error Encrypting Data\n");ERR_print_errors_fp(stderr);}PKCS7_free(_pkcs7);X509_free(_x509_r);OSSL_STACK_OF_X509_free(_sk_x509);BIO_free(_bio_in);BIO_free(_bio_out);BIO_free(_bio_t);return ret;}
END
相关文章:
openssl3.2 - 官方demo学习 - smime - smenc.c
文章目录 openssl3.2 - 官方demo学习 - smime - smenc.c概述笔记END openssl3.2 - 官方demo学习 - smime - smenc.c 概述 读取X509证书, 用PKCS7加密明文(证书 明文 3DES_CBC), 保存为MIME格式的密文 openssl API的命名含义 BIO_new_file “new” a “file”, return a “…...
【EI会议征稿通知】第四届工业制造与结构材料国际学术会议(IMSM 2024)
第四届工业制造与结构材料国际学术会议(IMSM 2024) 2024 4th International Conference on Industrial Manufacturing and Structural Materials(IMSM 2024) 第四届工业制造与结构材料国际学术会议(IMSM 2024&#x…...
mysql中建立一个用户,只能看到某个指定的数据库
MySQL用户管理及权限控制 在MySQL数据库中,用户管理和权限控制是非常重要的功能。通过正确地设置用户和权限,可以保护数据库的安全性,防止未授权的访问和数据泄露。本文将介绍如何在MySQL中创建一个用户,并限制该用户只能访问特定…...
第2章 线程管理
2.1 线程的基本操作 每个程序至少有一个执行main()函数的线程, 其他线程与主线程同时运行。 如main()函数执行完成退出一样, 线程执行完函数也会退出。 为线程创建std::thread() 对象后, 需要等待该线程结束。 那么, 先启动线程。…...
机器学习第二十六周周报 ARIMA Clustering model
文章目录 week26 ARIMA & Clustering model摘要Abstract一、龙格库塔方法二、文献阅读1. 题目2. abstract3. 网络架构3.1 ARIMA模型3.2 K-means聚类3.3 评估标准 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 数据来源4.3.2 使用ARIMA模型预测4.3.3 K-means聚类…...
支持XP系统的最新firefox浏览器
都2024年了,还XP系统?事情是这样的,我要维护一下非常老的项目,系统部署在windows server 2003下面。升级系统是不太可能了。只能在老系统上维护,老的系统上自带的IE 6.0浏览器,在当前几乎是不可用状态&…...
Pytorch从零开始实战17
Pytorch从零开始实战——生成对抗网络入门 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——生成对抗网络入门环境准备模型定义开始训练总结 环境准备 本文基于Jupyter notebook,使用Python3.8,Pytorch1.8cpu…...
openssl3.2 - 官方demo学习 - signature - EVP_DSA_Signature_demo.c
文章目录 openssl3.2 - 官方demo学习 - signature - EVP_DSA_Signature_demo.c概述笔记END openssl3.2 - 官方demo学习 - signature - EVP_DSA_Signature_demo.c 概述 DSA签名(摘要算法SHA256), DSA验签(摘要算法SHA256) 签名 : 用发送者的私钥进行签名. 验签 : 用发送者的公…...
vue2使用 element表格展开功能渲染子表格
默认样式 修改后 样式2 <el-table :data"needDataFollow" border style"width: 100%"><el-table-column align"center" label"序号" type"index" width"80" /><el-table-column align"cent…...
一个简单的ETCD GUI工具
使用ETCD没有好用的GUI工具,随手用c#写了一个, 做得好玩的一个ETCD GUI工具,后面加上CLI 工具,类似于 redis Cli工具一样,简化在 Linux下面的操作,不知道有没有必要, git 地址如下,…...
vue2 使用pdf.js 实现pdf预览,并可复制文本
需求:pdf预览,并且可以选中pdf的内容进行复制。 在ruoyi的vue前端项目中用到,参考了网上不少文章,因为大部分没给具体的pdf.js版本,导致运行过程中报各种api 错误,经过尝试以下版本可用,…...
REPLACE INTO
简介 在数据库中,REPLACE INTO 是一种用于插入或更新数据的(DML) SQL 语句。它与 INSERT INTO 语句类似,但具有一些特殊的行为。 语法 REPLACE INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); repla…...
idea 安装免费Ai工具 codeium
目录 概述 ide安装 使用 chat问答 自动写代码 除此外小功能 概述 这已经是我目前用的最好免费的Ai工具了,当然你要是有钱最好还是用点花钱的,比如copilot,他可以在idea全家桶包括vs,还有c/c的vs上运行,还贼强&am…...
关于C#中的Select与SelectMany方法
Select 将序列中的每个元素投影到新表单。 实例1 IEnumerable<int> squares Enumerable.Range(1, 10).Select(x > x * x);foreach (int num in squares) {Console.WriteLine(num); } /*This code produces the following output:149162536496481100 */ 实例2 str…...
CentOS上安装Mellanox OFED
打开Mellanox官网下载驱动 Linux InfiniBand Drivers 点击下载链接跳转至 Tgz解压缩执行 ./mlnxofedinstall发现缺少模块 # ./mlnxofedinstall Logs dir: /tmp/MLNX_OFED_LINUX.11337.logs General log file: /tmp/MLNX_OFED_LINUX.11337.logs/general.log Verifying KMP rpm…...
无/自监督去噪(1)——一个变迁:N2N→N2V→HQ-SSL
目录 1. 前沿2. N2N3. N2V——盲点网络(BSNs,Blind Spot Networks)开创者3.1. N2V实际是如何训练的? 4. HQ-SSL——认为N2V效率不够高4.1. HQ-SSL的理论架构4.1.1. 对卷积的改进4.1.2. 对下采样的改进4.1.3. 比N2V好在哪ÿ…...
【24.1.19】
24.1.19 本周工作内容下周工作计划 本周工作内容 本周的话主要的一个工作还是第三部分页面部分的完成工作,那就先来汇报一下第三部分的工作进度,第三部分的页面工作呢已经完成啦,就在刚刚提交啦全部的代码,那么这一部分的工作呢也…...
使用mamba替换conda和anaconda配置环境安装软件
使用mamba替换miniconda和anaconda,原因是速度更快,无论是创建新环境还是激活环境 conda、mamba、anaconda都是蟒蛇的意思… 下载mambaforge wget https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh ba…...
鸿蒙开发系列教程(四)--ArkTS语言:基础知识
1、ArkTS语言介绍 ArkTS是HarmonyOS应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,对TS的动态类型特性施加更严格的约束,引入静态类型。同时,提供了声明式UI、状态管理等相应的能力,让开…...
Pix2Pix理论与实战
本文为🔗365天深度学习训练营 中的学习记录博客 原作者:K同学啊|接辅导、项目定制 我的环境: 1.语言:python3.7 2.编译器:pycharm 3.深度学习框架Pytorch 1.8.0cu111 一、引入 在之前的学习中,我们知道…...
图图的嗨丝造相-Z-Image-Turbo保姆级教学:提示词中‘蓝色校服’‘黑色低帮鞋’等实体关联
图图的嗨丝造相-Z-Image-Turbo保姆级教学:提示词中‘蓝色校服’‘黑色低帮鞋’等实体关联 你是不是也遇到过这种情况:想用AI生成一张特定风格的图片,比如一个穿着蓝色校服、黑色低帮鞋,搭配渔网袜的校园少女,但写出来…...
Qwen3-TTS开源大模型效果展示:俄文/葡萄牙文/意大利文等小语种高自然度语音生成
Qwen3-TTS开源大模型效果展示:俄文/葡萄牙文/意大利文等小语种高自然度语音生成 你听过AI用俄语讲普希金的诗吗?或者用意大利语念一段歌剧台词?过去,想让AI生成地道的小语种语音,要么音色机械,要么口音奇怪…...
【AI】《Explainable Machine Learning》(2)
文章目录1、Global Explanation:explain the whole model2、局部解释(Local Explanation) vs 全局解释(Global Explanation)3、参考1、Global Explanation:explain the whole model 之前讲的是 local expl…...
百度地图API实战:5分钟搞定JS坐标系转换(wgs84转bd09ll避坑指南)
百度地图坐标系转换实战:从原理到避坑的全方位指南 第一次在项目里集成百度地图时,我盯着屏幕上偏移了500多米的标记点愣了半天——明明从GPS设备获取的经纬度坐标完全正确,为什么在地图上显示的位置却差之千里?这个困扰无数开发者…...
别再让单片机‘死机’!手把手教你用TPV6823设计一个靠谱的硬件看门狗电路
嵌入式系统守护者:TPV6823硬件看门狗电路实战指南 当电机控制板在工厂车间突然停止响应,或是工业传感器在雷雨天气后持续报错,许多工程师的第一反应往往是"程序又跑飞了"。这种嵌入式系统运行失控的现象,就像一台无人看…...
别再纠结选哪个了!实测对比PP-OCRv4、v3、读光等主流开源OCR模型(附完整代码与数据集)
主流开源OCR模型实战评测:从技术指标到业务落地的全维度解析 每次打开GitHub搜索OCR项目时,总会被琳琅满目的模型搞得眼花缭乱——PP-OCR系列、读光、DBNet...每个项目主页都宣称自己"精度最高"、"速度最快"。但当你真正把这些模型部…...
JIT 与 AOT 编译区别
注:本文为 “JIT 与 AOT ” 相关合辑。 英文引文,机翻未校。 中文引文,未整理去重。 图片清晰度受引文原图所限。 如有内容异常,请看原文。 JIT 与 AOT 区别 1 基本概念与典型实例 JIT (Just-In-Time):即时编译&#…...
Jimeng LoRA企业落地案例:设计公司LoRA训练-测试-选型一体化流程
Jimeng LoRA企业落地案例:设计公司LoRA训练-测试-选型一体化流程 1. 项目简介 今天给大家分享一个特别实用的企业级AI应用案例——如何为设计公司搭建一套完整的LoRA模型训练、测试和选型流程。这个项目基于Jimeng(即梦)系列LoRA模型&#…...
2026上位机开发技术栈全景:C#、Qt、Python谁才是你的最优解?
引言:上位机开发的黄金时代与技术抉择 在2026年的工业4.0浪潮中,上位机(Upper Computer)作为工业自动化系统的“大脑中枢”,正以前所未有的深度融入智能制造、能源管理、医疗设备和物联网(IoT)生…...
Pixel Mind Decoder 安全加固指南:防止API滥用与敏感信息泄露
Pixel Mind Decoder 安全加固指南:防止API滥用与敏感信息泄露 1. 为什么API安全如此重要 当你把AI模型部署为公开API服务时,就像在互联网上开了一家24小时营业的商店。如果不做好安全防护,可能会遇到各种不速之客:恶意攻击者试图…...
