网站首页 > 技术文章 正文
一、摘要与编解码
# 计算文件的 md5 哈希值,
# 128 位(16 字节)的哈希值
md5sum filename.txt
# 计算文件的 SHA-1 哈希值,
# 160 位(20字节)的哈希值
sha1sum filename.txt
# 计算文件的 SHA-256 哈希值,
# 256 位(32字节)的哈希值
sha256sum filename.txt
# 计算文件的 SHA-512 哈希值,
# 512 位(64字节)的哈希值
sha512sum filename.txt
# 一种将二进制数据编码为纯文本的编码方案
# base64 [OPTION]... [FILE]
# 对文件内容进行编码并保存到新文件中
base64 example.txt > encoded.txt
# 解码并保存到新文件中
base64 -d encoded.txt > example.txt
二、GPG(Gnu Privacy Guard)
一个非常流行的加密和数字签名工具,它提供了数据加密、解密和签名的功能。GPG 基于 OpenPGP 标准,允许用户安全地加密和签名数据,以及验证签名和解密其他用户加密的数据。
# 生成密钥,公钥与私钥
gpg --gen-key
# 查看密钥列表
gpg -k
# 导出指定邮箱的公钥到文件
gpg -o public.key -a \
--export liwy@126.com
# 导出备份私钥
gpg -o private.key -a \
--export-secret-keys liwy@126.com
# 导入密钥
gpg --import public.key
# 删除指定的私钥
gpg --delete-secret-key <UID>
# 删除指定的公钥
gpg --delete-key <UID>
# 使用指定公钥加密
gpg -o doc.gpg -e \
-r liwy@126.com doc.txt
# 使用自己的私钥解密
gpg -o doc2.txt -d -a doc.gpg
# 使用私钥生成文件签名
gpg -o doc.sig -b doc.txt
# 使用公钥验证签名
gpg --verify doc.sig doc.txt
三、OpenSSL
OpenSSL 是一个强大的开源工具包,用于实现安全套接字层(SSL)和传输层安全(TLS)协议,以及用于加密、解密、签名、验证、密码学和各种其他安全相关的操作。在 Linux 系统中,OpenSSL 通常用于创建和管理加密密钥、生成证书、加密和解密文件等。
根据不同算法生成摘要:
# 使用 md5 算法生成摘要
openssl dgst -md5 doc.txt
# 使用 sha1 算法生成摘要
openssl dgst -sha1 doc.txt
# 使用 sha256 算法生成摘要
openssl dgst -sha256 doc.txt
base64 编解码与对称加解密:
# 使用 base64 编码
openssl base64 -in doc.txt \
-out doc.base64
# 使用 base64 解码
openssl base64 -d -in doc.base64 \
-out doc2.txt
# 使用 des 加密
openssl enc -des -in doc.txt \
-out doc.des
# 使用 des 解密
openssl enc -d -des -in doc.des \
-out doc4.txt
# 使用 aes256cbc 加密
openssl enc -aes-256-cbc \
-in doc.txt -out doc.aes
# 使用 aes256cbc 解密
openssl enc -d -aes-256-cbc \
-in doc.aes -out doc3.txt
DSA 非对称签名:
# 生成密钥参数
openssl dsaparam \
-out dsaparam.pem 2048
# 使用密钥参数生成私钥
openssl gendsa \
-out private_key.pem dsaparam.pem
# 使用私钥生成公钥
openssl dsa -in private_key.pem \
-pubout -out public_key.pem
# 使用 DSA 私钥对 data.txt 文件的内容
# 进行 SHA-1 哈希签名
openssl dgst -sha1 \
-sign private_key.pem \
-out signature.bin data.txt
# 验证 signature.bin 签名是否与
# data.txt 的 SHA-1 哈希值匹配,
# 并且是否由 public_key.pem 的公钥创建
openssl dgst -sha1 \
-verify public_key.pem \
-signature signature.bin data.txt
RSA 非对称加密解密:
# 创建 rsa 私钥
openssl genrsa \
-out private_key.pem 2048
# 根据私钥创建公钥
openssl rsa -in private_key.pem \
-pubout -out public_key.pem
# 使用公钥加密
openssl rsautl -encrypt \
-pubin -inkey public_key.pem \
-in doc.txt -out doc.rsa
# 使用私钥解密
openssl rsautl -decrypt \
-inkey private_key.pem \
-in doc.rsa -out doc1.txt
# 使用私钥签名
openssl rsautl -sign \
-inkey private_key.pem \
-in doc.txt -out sign1.bin
# 使用公钥验证签名,可逆向出原文
openssl rsautl -verify \
-pubin -inkey public_key.pem \
-in sign3.bin -out new.txt
# 使用私钥签名
openssl dgst -sha256 \
-sign private_key.pem \
-out doc.bin doc.txt
# 使用公钥验签
openssl dgst -sha256 \
-verify public_key.pem \
-signature doc.bin doc.txt
证书相关操作:
# 生成一个 2048 位的 RSA 私钥,
# 并保存到指定文件中
openssl genrsa \
-out private_key.pem 2048
# 创建一个证书签名请求(CSR),
# CSR 是一个包含公钥和其他身份信息的文件,
# 将它发送给证书颁发机构(CA)以获取签名证书。
openssl req -new \
-key private_key.pem -out csr.pem
# 创建一个自签名证书,用于测试或内部使用,
# 自签名证书未由受信任的 CA 签名
openssl x509 -req -days 365 \
-in csr.pem -signkey private_key.pem \
-out certificate.pem
# 查看私钥信息
openssl rsa -in private_key.pem \
-noout -text
# 查看 csr 信息
openssl req -in csr.pem \
-noout -text
# 查看证书信息
openssl x509 -in certificate.pem \
-noout -text
# 验证证书
openssl verify certificate.pem
# 提取证书中的公钥
openssl x509 -in certificate.pem \
-noout -pubkey
猜你喜欢
- 2024-10-03 后缀.sha或.md5文件小,用处大:防止文件被篡改,校验文件完整性
- 2024-10-03 工业级SSD的SHA算法是什么?(ssd制造)
- 2024-10-03 俄罗斯黑客在行动:Zebrocy木马家族又添新成员,Go语言了解一下
- 2024-10-03 加盐加密是什么(加盐加密是什么意思)
- 2024-10-03 一个简单的方式搞定密码的加盐哈希与验证
- 2024-10-03 浅谈编解码和加解密(编解码的基本步骤)
- 2024-10-03 md5和sha256算法的区别,哪个比较安全
- 2024-10-03 散列算法比较:MD5、SHA1、SHA256有哪些区别
- 2024-10-03 SHA256算法可逆吗,SHA256算法流程步骤
- 2024-10-03 sha256为什么不可逆,sha256的安全性如何
- 10-02基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- 10-02Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- 10-02AWD-LSTM语言模型是如何实现的_lstm语言模型
- 10-02NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 10-02使用ONNX和Torchscript加快推理速度的测试
- 10-02tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- 10-02Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- 10-02Gateway_gateways
- 最近发表
-
- 基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- AWD-LSTM语言模型是如何实现的_lstm语言模型
- NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 使用ONNX和Torchscript加快推理速度的测试
- tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- Gateway_gateways
- Coze开源本地部署教程_开源canopen
- 扣子开源本地部署教程 丨Coze智能体小白喂饭级指南
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)