当前位置: 首页 > 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

http://www.lryc.cn/news/281174.html

相关文章:

  • 软件测试|使用matplotlib绘制多种饼图
  • vue3-响应式基础之ref
  • 华为网络设备 通过路由器子接口 Dot1q终结子接口实现跨VLAN通信
  • 代码随想录算法训练48 | 动态规划part09
  • 2024最新适用于 Windows 、Mac 的最佳屏幕录制软件
  • 【Docker】概述与安装
  • 衡水学院新人真题百练2022(1-20)修订版
  • 远程调用(OpenFeign)
  • 智能光栅光片显微成像技术的LabVIEW解决方案
  • 手撕乘积(**Multiplication** **Product**): 穷举和图示(2) 点积的几何意义
  • postman环境变量全局变量设置
  • Linux 内核线程
  • Golang学习之路一七fmt的使用
  • windows使用redis-安装和配置
  • Kafka系列(一)
  • Kotlin中的委托
  • VUE2/3:element ui table表格的显隐列(若依框架)
  • PTA-7-4 堆排序
  • uniapp滑动页面切换和下拉刷新,触底加载更多(swiper + scroll-view)
  • git 删除 submodule 子模块的步骤
  • 一文彻底解析 Compose 的穿透刺客 -- CompositionLocal
  • iOS 位移枚举NS_OPTIONS(如何实现多个枚举值的同时传入判断)
  • 【Axure高保真原型】树控制内联框架
  • Visual Studio常用快捷键及调试操作
  • MySQL 从零开始:02 MySQL 安装
  • GB28181/GB35114平台LiveGBS何如添加白名单,使指定海康、大华、华为等GB28181摄像头或录像机设备可以免密接入
  • 【计算机组成与体系结构Ⅱ】MIPS指令系统(实验)
  • jsonvue-mobile 联动方式说明。
  • abseil中的微操
  • NLP论文阅读记录 - 2022 | WOS 数据驱动的英文文本摘要抽取模型的构建与应用