当前位置: 首页 > news >正文

安全加密算法

常用加密算法

对称加密

加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。常用对称加密算法如下:
DES:密钥长度8个字节,安全性不足,已被证明可以在短时间内破解。
3DES:3次DES加密,密钥长度增加到24字节,兼容DES加密,破解难度增大,性能慢。3DES为DES到AES的过渡算法。
AES:分组加密算法,比3DES安全性更高、性能更快。密钥长度可以为16字节(128位,AES-128)、24字节(192位,AES-192)、36字节(256位、AES-256)
SM1:国密加密,分组加密算法,性能与AES相当,密钥长度16字节。适用小数据量加密。
SM4:相比SM1,使用大数据量加密。


非对称加密

需要公钥和私钥两个密码进行加密解密,公钥加密的内容只能私钥解密,私钥加密的内容只有公钥可以解密,性能慢,主要用于数字证书和数字签名,常用非对称加密算法如下:
RSA:RSA算法的加密和解密速度较慢,尤其是对于较长的密钥长度。
SM2 :国密加密,性能和安全性都优于RSA。

散列算法

不可逆算法。常用算法有MD5、SM3。

参考文档:https://blog.csdn.net/tryheart/article/details/107181738

常用证书格式

PEM格式

PEM(Privacy-Enhanced Mail)是一种基于文本的文件格式,广泛用于存储和传输加密的私钥、公钥和证书。PEM格式的文件通常使用Base64编码,并包含"-----BEGIN..."和"-----END..."等标识来标识文件的内容类型。PEM格式通常扩展名包括.pem(常用于私钥和公钥)、.key(常用于私钥)、.csr(常用于请求证书)、.cer(常用于安全通信证书)、.crt(常用于安全通信证书)。证书文件具体类型需查看文件内容,示例如下:

私钥文件:(包含私钥和公钥信息)

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAzTUFDfcDc6NulB9yRPl5w+PtQMsA/PgnWAOX5wcoH7X+UUZD
-----END RSA PRIVATE KEY-----

公钥文件:(包含公钥信息)

 -----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPZfK4htROfeUPsaQeogEXRAGB
-----END PUBLIC KEY-----

请求证书文件:(包含公钥和私钥签名信息)

-----BEGIN CERTIFICATE REQUEST-----
MIIBjzCB+QIBADBQMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNVBA
-----END CERTIFICATE REQUEST-----

通信证书文件:(包含公钥信息和签名私钥信息、CA中心私钥签名信息)

-----BEGIN CERTIFICATE-----
MIIDHDCCAgQCCQCpeNx2DrmHlzANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEw
-----END CERTIFICATE-----

.pfx:.pfx格式是一种包含私钥和公钥的加密证书文件。它通常用于存储和传输证书及其私钥,可用于实现数字签名、数据加密等安全操作。

.der:通常用于存储证书、公钥和其他加密相关的数据。与.pem格式不同,.der文件不使用Base64编码,而是以二进制形式表示数据。它是一种紧凑且高效的编码方法,可确保数据在存储和传输过程中的完整性和安全性。

CA认证中心

以下为模拟CA认证中心生成私钥、根证书流程。

文件说明

private/rxca-key.pem:CA认证中心用于签发证书的私钥
private/rxca.csr:用于生成rxca.cer的请求证书文件(临时文件,包含名文公钥及签名信息)
certs/rxca.cer:CA认证中心根证书(公钥,与rxca-key.pem配对),用户信任CA根证书后,由CA中心签发的证书都会被认为是安全的。


#创建CA中心目录
mkdir ca
cd ca  #进入CA中心目录
mkdir private  #私钥目录
mkdir certs    #证书目录#生成私钥rxca-key.pem,需设置私钥密码,后续使用私钥时需输入密码,参数-aes256指定私钥加密的加密算法
#出参:private/rxca-key.pem(私钥)
openssl genrsa -aes256 -out private/rxca-key.pem 1024#生成请求证书文件rxca.csr(需要用到rxca-key.pem是因为要签名),后续用于生成CA根证书,需输入前面设置的私钥密码
#入参:private/rxca-key.pem(私钥,用于生成对应公钥)、"/C=CN/ST=ZJ/L=HZ/O=RX/OU=ZG/CN=RXCA"(证书主题,唯一标识,方便后续使用)
#出参:private/rxca.csr(请求证书文件)
openssl req -new -key private/rxca-key.pem -out private/rxca.csr -subj "/C=CN/ST=ZJ/L=HZ/O=RX/OU=ZG/CN=RXCA"mkdir certs
#根据请求证书文件rxca.cer生成CA中心根证书,需输入前面设置的私钥密码
#入参:private/rxca.csr(请求证书文件)、private/rxca-key.pem(私钥,用于数字签名)
#出参:certs/rxca.cer(根证书)
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey private/rxca-key.pem -in private/rxca.csr -out certs/rxca.cer


生成加密通信证书

以下为模拟需要加密通信的机构生成通信私钥、公钥并到CA认证中心认证生成通信证书的过程。

文件说明

private/client-key.pem:加密通信私钥,生成该证书需设置密码,后续使用需输入密码。
private/client.csr:请求证书,用于生成加密通信证书(临时文件)
certs/client.cer:加密通信证书,已被CA中心认证(公钥,与client-key.pem配对),CA中心认证过的证书会自动被认为是安全的。
certs/client.pfx:加密签名证书,已被CA中心认证(包含公钥、私钥,即可用于加密,也可用于签名)

#创建用户目录(与ca目录同级)
mkdir client
cd client #进入CA中心目录
mkdir private #私钥目录
mkdir certs   #证书目录#创建加密通信私钥,需设置私钥密码,后续使用私钥时需输入密码
#出参:private/client-key.pem(私钥)
openssl genrsa -aes256 -out private/client-key.pem 1024#生成证书请求文件private/client.csr,需输入前面设置的私钥密码
#入参:private/client-key.pem(私钥,用于生成公钥)、"/C=CN/ST=ZJ/L=HZ/O=RX/OU=ZG/CN=client"(主题,证书唯一标识)
#出参:private/client.csr(请求证书文件)
openssl req -new -key private/client-key.pem -out private/client.csr -subj "/C=CN/ST=ZJ/L=HZ/O=RX/OU=ZG/CN=client"#证书请求文件到CA中心认证生成证书 certs/client.cer,需输入CA中心私钥密码(该步骤由CA中心执行)
#入参:../ca/certs/rxca.cer(CA中心根证书)、../ca/private/rxca-key.pem(CA中心私钥)、private/client.csr(请求证书文件)
#出参:certs/client.cer(证书文件)
openssl x509 -req -days 365 -sha1 -extensions v3_req -CA ../ca/certs/rxca.cer -CAkey ../ca/private/rxca-key.pem -CAcreateserial -in private/client.csr -out certs/client.cer#生成加密签名证书certs/client.pfx,需输入前面设置的私钥密码,且需要指定后续使用该数字签名证书的密码
#入参:certs/client.cer(证书文件)、private/client-key.pem(私钥)
#出参:certs/client.pfx(加密签名证书文件)
openssl pkcs12 -export -in certs/client.cer -inkey private/client-key.pem -out certs/client.pfx

相关文章:

安全加密算法

常用加密算法 对称加密 加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。常用对称加密算法如下: DES:密钥长度8个字节,安全性不足,已被证明…...

软件测试|使用matplotlib绘制多种饼图

简介 Matplotlib是一个强大的数据可视化库,它允许我们创建各种类型的图表,包括饼图。饼图是一种用于显示数据分布的常见图表类型。在本文中,我们将介绍如何使用Matplotlib创建不同类型的饼图,并提供示例代码。 创建标准饼图 首…...

vue3-响应式基础之ref

声明响应式状态 ref() 在组合式 API 中,推荐使用 ref() 函数来声明响应式状态: ref() 接收参数,并将其包裹在一个带有 .value 属性的 ref 对象中返回: import { ref } from vue const count ref(0)console.log(count) // { va…...

华为网络设备 通过路由器子接口 Dot1q终结子接口实现跨VLAN通信

(二层交换机直接跳过三层交换价接入路由器时才使用该配置。推荐使用三层交换机建立VLANIF配置更简洁明了。如果VLAN较少可直接配置;路由器接口,一个物理接口一个VLAN) S1配置 vlan batch 2 to 3interface GigabitEthernet0/0/1port link-type trunkpor…...

代码随想录算法训练48 | 动态规划part09

今天就是打家劫舍的一天,这个系列不算难,大家可以一口气拿下。 198.打家劫舍 视频讲解:动态规划,偷不偷这个房间呢?| LeetCode:198.打家劫舍_哔哩哔哩_bilibili 代码随想录 213.打家劫舍II 视频讲解&am…...

2024最新适用于 Windows 、Mac 的最佳屏幕录制软件

屏幕录制软件可以帮助我们录制 PC 和MacBook的实时屏幕视频。如果您想为 优酷录制视频,或者您正在为您的公司制作基于视频的项目,并且需要捕获屏幕的实时视频录制,那么我们在此列出了 一 款适合您的 Windows 、Mac的 2024 年最佳屏幕录制软件…...

【Docker】概述与安装

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一. Docker的概述 1.Docker为什么出现 2…...

衡水学院新人真题百练2022(1-20)修订版

​ 1 重要的话说三遍 分数 5 作者 陈越 单位 浙江大学 这道超级简单的题目没有任何输入。 你只需要把这句很重要的话 —— “I’m gonna WIN!”——连续输出三遍就可以了。 注意每遍占一行&#xff0c;除了每行的回车不能有任何多余字符。 #include<stdio.h> int…...

远程调用(OpenFeign)

远程调用 何为远程调用?例如:单体服务时,A模块的功能涉及到引用B模块的功能,那我们需要在A模块中注入B模块的相关服务类并调用其方法;那么同样的逻辑在微服务体系下,就会变成了A服务的功能需要调用B服务的功能,这就形成了服务间调用,也称为远程调用。 目前来说,微服务…...

智能光栅光片显微成像技术的LabVIEW解决方案

智能光栅光片显微成像技术的LabVIEW解决方案 在生物医学研究中&#xff0c;高效的成像技术对于捕捉细胞内罕见和复杂事件至关重要。智能光栅光片显微技术&#xff08;smartLLSM&#xff09;的出现&#xff0c;代表了LabVIEW软件在高端成像领域的革命性应用&#xff0c;这项技术…...

手撕乘积(**Multiplication** **Product**): 穷举和图示(2) 点积的几何意义

手撕乘积(Multiplication & Product): 穷举和图示(2) 点积的几何意义 点乘 x 3 y 5 xNda np.arange(x) >>> array([0, 1, 2]) x2Nda xNda*21 >>> array([1, 3, 5]) yNda np.arange(1, y) >>> array([1, 2, 3, 4]) xyNda np.meshgrid(xN…...

postman环境变量全局变量设置

postman环境变量、全局变量设置 在公司中&#xff0c;一般会存在开发环境、测试环境、线上环境等&#xff0c;如果需要在不 同的环境下切换做接口测试&#xff0c;显然我们需要把所有接口的域名进行修改&#xff0c;如果接 口测试用例较多&#xff0c;那么修改会非常费力&…...

Linux 内核线程

文章目录 一、内核线程二、内核线程与普通进程的异同三、内核线程创建3.1 kernel_thread3.2 kthread_create 四、内核线程的退出四、示例代码参考资料 一、内核线程 内核线程就是内核的分身&#xff0c;一个分身可以处理一件特定事情。Linux内核使用内核线程来将内核分成几个功…...

Golang学习之路一七fmt的使用

Golang学习之路一七fmt的使用 格式化参数列表 格式含义%%一个%字面量%b一个二进制整数值(基数为 2)&#xff0c;或者是一个(高级的)用科学计数法表示的指数为 2 的浮点数%c字符型。可以把输入的数字按照 ASCII 码相应转换为对应的字符%d一个十进制数值(基数为 10)%e以科学记数…...

windows使用redis-安装和配置

windows使用redis 安装和配置 下载安装方式一-使用压缩包安装解压到指定的文件Redis安装为Windows服务安装成功 方式二-MSI安装包安装完成 Redis配置远程访问1.修改配置文件redis.windows.conf2.修改完redis配置文件&#xff0c;必须重启redis 下载 先下载Redis for windows 的…...

Kafka系列(一)

内容 该系列主要是复习期间&#xff0c;通过浏览资料记录的一些笔记和重点&#xff0c;用于日常学习和学习后的总结。 组件概念 broker 一个Kafka的集群通常由多个broker组成&#xff0c;这样才能实现负载均衡、以及容错 broker是无状态&#xff08;Sateless&#xff09;的…...

Kotlin中的委托

在Kotlin中&#xff0c;委托是一种强大的设计模式&#xff0c;它允许一个类将其一些职责委托给另一个类。这种机制通过关键字by来实现。委托有助于代码的重用&#xff0c;降低耦合性&#xff0c;并提供更清晰的类设计。在Kotlin中&#xff0c;有两种主要类型的委托&#xff1a;…...

VUE2/3:element ui table表格的显隐列(若依框架)

若依框架自带一个组件&#xff0c;封装了关于表格&#xff0c;展示和隐藏表格列的功能&#xff1b; 使用效果就是这样的&#xff0c;在表格上面&#xff0c;三个框&#xff0c;从左到右分别是隐藏上面搜索&#xff0c;刷新列表&#xff0c;和显隐列的功能&#xff1b; 一、下面…...

PTA-7-4 堆排序

代码如下: #include<iostream> using namespace std; void change(int arr[], int n, int i); int main() {int n,i,end,arr[1000];cin >> n;for (i 0; i < n; i){cin >> arr[i];}//进行一次排序,把最大值放到顶端for (i n/2-1; i > 0; i--){change…...

uniapp滑动页面切换和下拉刷新,触底加载更多(swiper + scroll-view)

因为官方文档乱七八糟的&#xff0c;所以自己来总结下 需求&#xff1a; 常见的上方tag标签切换&#xff0c;下方是页面&#xff0c;上面点击切换&#xff0c;下面页面也切换&#xff0c;下方列表有下拉刷新&#xff0c;触底加载更多 因为这两个组件都是固定高度的&#xff0c;…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...