openssl3.2 - exp - PEM <==> DER
文章目录
- openssl3.2 - exp - PEM <==> DER
- 概述
- 笔记
- 加密用的私钥(带口令保护) - PEM => DER
- 加密用的私钥(不带口令保护) - DER => PEM
- 将不带口令的PEM转成带口令的PEM
- 支持口令的算法
- 备注
- END
openssl3.2 - exp - PEM <==> DER
概述
想将客户端私钥 + 服务端公钥 数据转成 C数组, 放到客户端工程中.
用openssl默认生成好的证书, 公钥, 私钥等数据, 都是PEM格式的.
PEM格式的数据有明显的标记, 可以看到PEM数据的用途.
如果有人逆向客户端程序, 很容易看到线索.
就想着, 将PEM格式文件转为DER格式文件, 然后将DER格式文件转成数组, 再放入客户端程序来用, 这样好一些.
查资料时, 看到大部分例子都是拿证书(x509)做的例子.
看了openssl帮助, 不同的openssl对象(证书, 纯公钥, 纯私钥, DH参数…), 进行PEM和DER互转时, 用的openssl命令都是不同的.
针对不同的openssl对象, 先选好对应的对象命令, 然后才能正确的互转.
笔记
加密用的私钥(带口令保护) - PEM => DER
私钥都是有密码的, 转换时要给出密码.
密码有不同格式:
:pass - 文本密码
:env - 在环境变量中的密码
:stdin - 需要密码时, 现输入密码.
:file - 在文件中的密码
openssl pkey -in my_enc_priv_key.pem -passin pass:my_priv_key_pwd -out app_key.der -outform DER
可以看出, 如果要自动运行转换, 用哪种密码输入方式都不太安全.
最好还是不带 -passin 参数, 这样需要密码时, openssl.exe自己弹出提示需要密码, 然后自己就在命令行自己输入密码好了, 这样安全一些. 不过麻烦啊.
加密用的私钥(不带口令保护) - DER => PEM
openssl pkey -in app_key.der -out app_key3.pem -outform PEM
感觉咋原来PEM带口令保护的, 转成DER之后, 口令被搞没了…
又验证了一次, 果真, 从带口令保护的PEM(加密的私钥)转成DER后, 口令被搞没了.
如果想要导出后的DER/PEM带口令, 需要加选项 -passout
将不带口令的PEM转成带口令的PEM
openssl pkey -in app_key3.pem -out app_key5_pwd.pem -outform PEM -passout pass:111111 -aes-256-cbc
支持口令的算法
算法不能有 EVP_CIPH_FLAG_AEAD_CIPHER 标记, 模式不能是 EVP_CIPH_XTS_MODE
有以上2点的算法不能用在命令行程序的参数输入上.
通过openssl实现中的opt_cipher(), 可以看到以上2点的判断.
如果想知道哪种算法支持命令行口令, 就需要将全部算法都列出来, 然后过滤掉有上面2点的算法, 剩下的算法就都是可以用在命令行上的.
另外开一篇笔记, 先这样.
对于支持口令加密的算法列表, 已经写程序+手工验证, 一共126种算法可用(openssl3.2 - exp - 可以在命令行使用的口令算法名称列表).
备注
经过实验, 可以看出
转换就是转换, 带口令就是带口令, 相互之间没关联.
如果要操作的PEM/DER是带口令保护的, 就需要给出口令选项 -passin pass:xxx, 来完成口令验证.
如果要转换后的PEM/DER带口令保护, 就需要给出口令选项 -passout pass:xxx -cipher, 其中cipher需要是openssl支持的算法名称.
PEM/DER之间的转换分为4种, PEM=>DER; DER=>PEM; PEM=> PEM, DER=>DER. 可以加选项是否带口令保护.
如果想让程序只能打开自己的带口令保护的PEM/DER, 可以将程序校验和(e.g. 加沙后的PE校验的SHA512 )相关内容作为口令, 这样就能做到一个程序只能用自己的唯一证书(程序先写好, 然后给程序发带口令保护的证书, 然后程序正常工作.).
如果逆向的人将程序改了, 证书就不能打开成功, 后续操作(非对称/对称解密)就会失败. 间接的保护了程序被非授权用户使用.
END
相关文章:
openssl3.2 - exp - PEM <==> DER
文章目录 openssl3.2 - exp - PEM <> DER概述笔记加密用的私钥(带口令保护) - PEM > DER加密用的私钥(不带口令保护) - DER > PEM将不带口令的PEM转成带口令的PEM支持口令的算法备注END openssl3.2 - exp - PEM <> DER 概述 想将客户端私钥 服务端公钥 数…...
云计算的部署方式(公有云、私有云、混合云、社区云)
云计算的部署方式(公有云、私有云、混合云、社区云) 目录 零、00时光宝盒 一、云计算的部署方式 1.1、公有云(Public Cloud) 1.2、私有云(Private Cloud) 1.3、混合云(Hybrid Cloud) 1.4、社区云&am…...
umi4 项目使用 keepalive 缓存页面(umi-plugin-keep-alive、react-activation)
umi4使用keepalive 配置文件config\config.ts export default defineConfig({plugins: [umi-plugin-keep-alive], });安装add umi-plugin-keep-alive yarn add umi-plugin-keep-alive页面 A import { KeepAlive, history, useAliveController } from umijs/max; const Page…...
new;getline();重载<<和>>
面向对象程序设计的优点: 易维护易扩展模块化:通过设置访问级别,限制别人对自己的访问,保护了数据安全 int main(){ return 0;} 返回值0在windows下编程一般没用,但是在linux中编程,返回值有时有用 汇编与…...
python报错
Missing optional dependency ‘xlrd’. Install xlrd > 1.0.0 for Excel support Use pip or conda to install xlrd 安装xlrd库...
Android14 Handle机制
Handle是进程内部, 线程之间的通信机制. handle主要接受子线程发送的数据, 并用此数据配合主线程更新UI handle可以分发Message对象和Runnable对象到主线程中, 每个handle实例, 都会绑定到创建他的线程中, 它有两个作用,: (1) 安排消息在某个主线程中某个地方执行 (2) 安排…...
spark 总结
1.spark 配置文件 spark-default.conf spark.yarn.historyServer.address xiemeng-01:18080 spark.history.port18080 hive-site.xml <configuration><property><name>javax.jdo.option.ConnectionURL</name> </property><property>&…...
Gitlab修改仓库权限为public、Internal、Private
Public(公开):所有人都可以访问该仓库; Internal(内部):同一个GitLab群组或实例内的所有用户都可以访问该仓库; Private(私人):仅包括指定成员的用…...
Python语言例题集(008)
#!/usr/bin/python3 #建立链表类和遍历此链表 class Node(): def init(self,dataNone): self.datadata self.nextNone class LinkedList(): def init(self): self.headNone def printList(self):ptrself.headwhile ptr:print(ptr.data)ptrptr.nextlinkLinkedList() link.he…...
【Java核心能力】京东并行框架asyncTool如何针对高并发场景进行优化?
欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…...
如何在Mapbox GL中处理大的GEOJSON文件
Mapbox GL可以将 GeoJSON 数据由客户端(Web 浏览器或移动设备)即时转换为 Mapbox 矢量切片进行显示和处理。本文的目的是教大家如何有效加载和渲染大型 GeoJSON 源,并优化渲染显示速度,增强用户体验,减少客户端卡顿问题。本文以Mapbox 为例,至于其它框架原理大致相同,可…...
Vue.js过滤器:让数据展示更灵活
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
【深度学习笔记】计算机视觉——FCN(全卷积网络
全卷积网络 sec_fcn 如 :numref:sec_semantic_segmentation中所介绍的那样,语义分割是对图像中的每个像素分类。 全卷积网络(fully convolutional network,FCN)采用卷积神经网络实现了从图像像素到像素类别的变换 :cite:Long.Sh…...
物联网行业如何发展新质生产力
物联网行业作为当今科技发展的前沿领域,其在新质生产力的提升中扮演着举足轻重的角色。为了推动物联网行业的快速发展,我们需要从技术创新、产业融合、人才培养和政策支持等多个方面入手,共同构建一个有利于物联网行业发展的生态环境。 首先…...
manjaro 安装 wps 教程
内核: Linux 6.6.16.2 wps-office版本: 11.10.11719-1 本文仅作为参考使用, 如果以上版本差别较大不建议参考 安装wps主体 yay -S wps-office 安装wps字体 (如果下载未成功看下面的方法) yay -S ttf-waps-fonts 安装wps中文语言 yay …...
Spring AOP基于注解方式实现
1. 场景介绍 目前假设我们有一个计算器类,并要为其中的方法添加日志功能。 计算器类如代码所示: public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j);}public class Calculator…...
MySQL中常用的操作语句已汇总
目录 一、库语句 1.查询现有数据库 2.创建数据库 3.选中数据库 编辑 4.删除数据库 二、初阶表操作 1.查看数据库现有表 2.查看表结构 3.创建表 4.删除表 5.全列查询 6.删除表2 7.修改操作 三、插入操作 1.全列插入 2.指定列插入 3.一次插入多组数据 4.插入…...
linux设置nginx systemctl启动
生成nginx.pid文件 #验证nginx的配置,并生成nginx.pid文件 /usr/local/nginx/sbin/nginx -t #pid文件目录在 /usr/local/nginx/run/nginx.pid 设置systemctl启动nginx #添加之前需要先关闭启动状态的nginx,让nginx是未启动状态 #关闭nginx /usr/local…...
stable diffusion faceswaplab换脸插件报错解决
错误提示: ERROR - Failed to swap face in postprocess method : apply_overlay() takes 3 positional arguments but 4 were given 打开插件对应目录: \sd-webui-aki-v4.6.1\extensions\sd-webui-faceswaplab\scripts\faceswaplab_utils中 imgutil…...
Kap - macOS 开源录屏工具
文章目录 关于 Kap 关于 Kap Kap 是一个使用web技术的开源的屏幕录制工具 官网:https://getkap.cogithub : https://github.com/wulkano/Kap 目前只支持 macOS 12 以上,支持 Intel 和 Apple silicon 你可以前往官网,右上方下载 你也可以使…...
RAG系统必看!混合检索、关键词、语义一次讲清,生产级方案选型指南
本文深入探讨了RAG系统中检索层的核心重要性,对比了语义检索、关键词检索和混合检索三种方式的特点与适用场景。指出单一检索方式存在致命盲区,生产级RAG必须采用混合检索。文章详细解析了关键词检索的两种技术路线(稀疏向量和全文索引&#…...
Ollama+Llama-3.2-3B实战:快速搭建本地写作助手,帮你写邮件、周报、文案
OllamaLlama-3.2-3B实战:快速搭建本地写作助手,帮你写邮件、周报、文案 1. 告别“憋稿子”,让AI成为你的专属写作秘书 你有没有过这样的经历?周五下午,对着空白的Word文档,绞尽脑汁想周报怎么写ÿ…...
AIAgent架构治理的“最后一公里”:当LLM调用链遇上分布式事务——3种跨Agent一致性保障方案(含开源PoC代码)
第一章:AIAgent架构治理的“最后一公里”:当LLM调用链遇上分布式事务 2026奇点智能技术大会(https://ml-summit.org) 在多Agent协同推理场景中,单次用户请求常触发跨模型、跨服务、跨数据库的长链路LLM调用——从意图解析Agent调用RAG检索服…...
第三节 SVPWM仿真实战:从扇区判断到PWM波生成的完整建模解析
1. SVPWM仿真实战:从理论到模型的完整闭环 第一次接触SVPWM仿真时,我被各种坐标变换和扇区判断绕得头晕。直到在电机控制项目中亲手搭建了完整的Simulink模型,才发现核心逻辑其实就藏在几个关键模块里。这次我们就用"搭积木"的方式…...
【泛微】动态联动控制:主表字段变化触发明细行智能增删与内容同步
1. 动态联动控制的业务价值 在OA系统的日常使用中,主表和明细表的联动操作是最让业务人员头疼的场景之一。想象一下这样的画面:采购员在创建采购单时,每次选择不同品类后,都要手动清空原有明细、重新添加对应物料,这种…...
DeepSeek-OCR-2参数详解:DeepEncoder V2架构与vLLM推理优化实践
DeepSeek-OCR-2参数详解:DeepEncoder V2架构与vLLM推理优化实践 1. 引言:重新定义OCR的智能视觉理解 如果你还在用传统的OCR工具,每次处理复杂文档时都要忍受识别不准、版面混乱的烦恼,那么今天介绍的DeepSeek-OCR-2可能会彻底改…...
收藏!小白/程序员入行AI应用开发必看,别被招聘要求吓退(附实操资源)
如果你是程序员小白,或是想转型AI应用开发的从业者,听我一句劝——大胆投简历,别被招聘启事上的“精通大模型底层原理”“2年以上AI相关经验”吓住!很多时候,招聘要求写的只是企业的“理想画像”,我和身边不…...
Pixel Language Portal 助力后端开发:构建高并发实时数据处理服务
Pixel Language Portal 助力后端开发:构建高并发实时数据处理服务 1. 实时数据处理的行业痛点 想象一下这样的场景:一家智能工厂部署了上千个传感器,每秒产生数百万条数据;或者一个金融交易平台,需要实时处理全球市场…...
**光场显示中的编程实践:基于Python与OpenCV的3D立体图像生成技术探索**在虚拟现实、增强现实和下一
光场显示中的编程实践:基于Python与OpenCv的3D立体图像生成技术探索 在虚拟现实、增强现实和下一代人机交互系统中,光场显示(Light Field Display) 正逐步从实验室走向产业化落地。它通过精确控制光线的方向和强度,在不…...
【在Spring AI项目中如何通过代码为文档添加元信息的实用指南】
在Spring AI项目中如何通过代码为文档添加元信息的实用指南当你在处理大量数据时,无论是在Spring AI项目中还是其他任何地方,你可能会发现自己需要一种方法来组织和理解数据。这就是元信息(Metadata)发挥作用的地方。在本篇博客中…...
