• 编程内功心法「公钥密码学系列」基础介绍公钥证书与私钥标准(1)


    概述

    在公钥密码学(也称为非对称密码术)中,加密机制依赖于两个相关的密钥,一个公钥和一个私钥。公钥用于加密消息,而只有私钥的所有者才能解密消息。

    公钥证书标准-X.509和私钥的标准-PKCS8

    • X.509是定义公钥证书格式的标准。 因此,这种格式描述了其他信息中的公钥。DER是最流行的编码格式,用于在文件中存储 X.509 证书、PKCS8 私钥等数据。这是一种二进制编码,无法使用文本编辑器查看生成的内容。

    • PKCS8是用于存储私钥信息的标准语法。可以选择使用对称算法对私钥进行加密。该标准不仅可以处理 RSA 私钥,还可以处理其他算法。PKCS8 私钥通常通过 PEM 编码格式进行交换。

    各类公私钥及证书文件介绍

    • X509文件扩展名(x509这种证书只有公钥,不包含私钥。)
    • DER:DER扩展用于二进制DER编码证书。这些文件也可能带有CER或CRT扩展名。正确的英语用法是“我有DER编码证书”而不是“我有DER证书”
    • PEM:用ASCLL(BASE64)编码的证书;PEM扩展名用于不同类型的X.509v3文件,这些文件包含前缀为“-BEGIN …”行的ASCII(Base64)数据。
    • CER:存放公钥,没有私钥;
    • PFX:存放公钥和私钥(pem 后缀的证书都是base64编码;
    • der 后缀的证书都是二进制格式;
    • pfx 主要用于windows平台,浏览器可以使用,也是包含证书和私钥,获取私钥需要密码才可以)

    crt cer 后缀的文件都是证书文件(编码方式不一定,有可能是.pem,也有可能是.der);.

    PEM文件以及公私钥的关系

    PEM是DER证书的base-64编码机制。PEM 还可以对其他类型的数据进行编码,例如公钥/私钥和证书请求。它是包含一个或多个采用 Base64 ASCII 编码的项目的文本文件,每个项目都有开始和结束两个部分

    -----BEGIN RSA PRIVATE KEY-----
    
    ...Base64 encoding of the DER encoded certificate...
    
    -----END RSA PRIVATE KEY-----
    
    • 1
    • 2
    • 3
    • 4
    • 5

    PEM 在 RFC 1422(从 1421 到 1424 的系列的一部分)中定义。它是一种容器格式,可能仅包含公共证书,也可能包括整个证书链,包括公钥、私钥和根证书。

    它可以有各种扩展名(.pem,.key,.cer,.cert等)。典型的 PEM 文件包括:

    key.pem 包含私有加密密钥

    Cert.PEM 包含证书信息

    首先,我们将研究有关公钥密码学的一些重要概念。然后,我们将学习如何解析 PEM 文件。

    PEM 格式

    PEM格式通常用于数字证书认证机构(Certificate Authorities,CA),扩展名为.pem, .crt, .cer, and .key。内容为Base64编码的ASCII码文件,有类似"-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----"的头尾标记。服务器认证证书,中级认证证书和私钥都可以储存为PEM格式(认证证书其实就是公钥)。Apache和类似的服务器使用PEM格式证书。

    DER 格式

    DER格式与PEM不同之处在于其使用二进制而不是Base64编码的ASCII。扩展名为.der,但也经常使用.cer用作扩展名,所有类型的认证证书和私钥都可以存储为DER格式。Java使其典型使用平台。

    知识点:

    • 使用公钥操作数据属于加密

    • 使用私钥对原文的摘要操作属于签名

    • 公钥和私钥可以互相加解密

    • 不同格式的证书之间可以互相转换

    • 公钥可以对外公开,但是私钥千万不要泄露,要妥善保存

    注意:在我们备份证书信息的时候,最好使用.jks或者.pfx文件进行保存,这样备份的证书文件可以被完整的导出。

  • 相关阅读:
    JavaWeb搭建学生管理系统(手把手)
    FusionAccess软件架构、FusionAccess必须配置的四个组件、桌面发放流程、虚拟机组类型、桌面组类型
    SpringBoot整合Redis,缓存批量删除 | redisTemplate.keys(pattern)模糊查询找不到keys,“ * “ 通配符无效
    异步FIFO设计的仿真与综合技术(2)
    百度百科创建基础概念分享,为什么百度百科那么难做
    【JAVA高级】——初识JDBC中DAO数据访问对象
    acwing算法基础之搜索与图论--染色法判断二分图
    校园安防智能视频行为分析预警系统解决方案
    定时轮询-长轮询-websocket
    android 11安装apk自动获取权限
  • 原文地址:https://blog.csdn.net/l569590478/article/details/128200985