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

怎么做网站可以注册的沈阳网络优化培训

怎么做网站可以注册的,沈阳网络优化培训,wordpress空间服务商,桐庐县建设局网站1.概述 RFC5958主要定义非对称密钥的封装语法#xff0c;RFC5958用于替代RFC5208。非对称算法会涉及到1对公私钥#xff0c;例如按照RSA算法#xff0c;公钥是n和e#xff0c;私钥是d和n。当需要将公私钥保存到文件时#xff0c;需按照一定的格式保存。本文主要定义公私钥…1.概述 RFC5958主要定义非对称密钥的封装语法RFC5958用于替代RFC5208。非对称算法会涉及到1对公私钥例如按照RSA算法公钥是n和e私钥是d和n。当需要将公私钥保存到文件时需按照一定的格式保存。本文主要定义公私钥保存到文件的语法。目前私钥封装到文件的规范有PKCS#1和PKCS#8其中主流为PKCS#8。公钥封装通常兼容X.509规范。本文基于RSA算法进行简单说明。 2.PKCS#8私钥 2.1私钥格式 在RFC5958中私钥的ASN.1语法如下ASN.1语法可参考之前的文章 OneAsymmetricKey :: SEQUENCE {version Version,privateKeyAlgorithm PrivateAlgorithmIdentifier,privateKey PrivateKeyattributes [0] Attributes OPTIONAL,...,[[2:publickey [1] PublicKey OPTIONAL]],... }PrivateKeyInfo :: OneAsymmetricKey2.2 参数说明 Version :: INTEGER { v1(0),v2(1)}。Version值为0或者1当值为0时私钥格式遵循RFC5208。RFC5208中对私钥的定义如下 PrivateKeyInfo :: SEQUENCE {version Version,privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,privateKey PrivateKeyattributes [0] IMPLICIT Attributes OPTIONAL }Version :: INTEGER PrivateKeyAlgorithmIdentifier :: AlgorithmIdentifier PrivateKey :: OCTET STRING Attributes :: SET OF Attributes 在非对称算法为RSA非加密模式时PrivateKeyAlgorithmIdentifier定义在RFC5280定义如下 AlgorithmIdentifier :: SEQUENCE {algorithm OBJECT IDENTIFIER,parameters ANY DEFINED BY algoarithm OPTIONAL }algorithm的定义在RFC8017 A.1值为pkcs-1 1,parameters的类型为NULL。pkcs-1 1的值在RFC8017 Appendix C PrivateKey定义在PKCS#1RFC8017 A.1.2 RSA Private Key Syntax定义如下 RSAPrivateKey ::SEQUENCE {version Version,modulus INTEGER, --npublicExponent INTEGER, --eprivateExponent INTEGER, --dprime1 INTEGER, --pprime2 INTEGER, --qexponent1 INTEGER,--d mod (p-1)exponent2 INTEGER,--d mod (q-1)coefficient INTEGER, -- (inverse of q) mod potherPrimeInfos OtherPrimeInfos OPTIONAL }相关参数含义请查看RSA算法原理。 Attributes等参数为可选值未深入研究。 因此当version为0时私钥格式应如下 PrivateKeyInfo :: SEQUENCE {version Version,privateKeyAlgorithm :: SEQUENCE {algorithm OBJECT IDENTIFIER,parameters ANY DEFINED BY algoarithm OPTIONAL}privateKey :: OCTET STRINGRSAPrivateKey :: SEQUENCE {version Version,modulus INTEGER, --npublicExponent INTEGER, --eprivateExponent INTEGER, --dprime1 INTEGER, --pprime2 INTEGER, --qexponent1 INTEGER,--d mod (p-1)exponent2 INTEGER,--d mod (q-1)coefficient INTEGER, -- (inverse of q) mod potherPrimeInfos OtherPrimeInfos OPTIONAL}attributes [0] IMPLICIT Attributes OPTIONAL }3.X.509公钥 在RFC5280中对公钥的定义如下 SubjectPublicKeyInfo :: SEQUENCE {algorithm AlgorithmIdentifier,subjectPublicKey BIT STRING }其中AlgorithmIdentifier和私钥中定义相同见本文2.2章节 subjectPublicKey定义在RFC8017 A.1.1 RSAPublicKey :: SEQUENCE {modulus INTEGER, --npublicExponent INTEGER --e }4.文件格式说明 原始公私钥和证书文件应以ASN.1进行编码编码后的文件是二进制格式。为便于查看通常会对ASN.1原始编码进行base64并添加头尾信息形成文本存储格式此类文件即为PEM文件通常以.pem、.cer、.key等格式保存。第五章节将详细说明。 5.实践验证 本章主要基于openssl 3.1版本进行实践以验证上述理解是否正确。注意不同版本的openssl生成的公私钥遵循的规范可能有一定差异。尤其是1.X版本 5.1 公钥 我们通过openssl生成公私钥命令如下 openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048 默认生成PKCS#8 PEM格式的私钥如下 该文件是以-----BEGIN PRIVATE KEY-----为头-----END PRIVATE KEY-----结尾中间部分即为PKCS#8私钥的ASN.1原始编码的BASE64后内容。可通过如下步骤进行验证 将中间部分复制到新文件中新文件命名为111.txt 2.对111.txt中的内容进行base64解码后以文本形式打开将是乱码 3.通过如下命令 openssl rsa -in private.pem -outform DER -out private.der 将PEM格式的私钥转换为ASN.1原始编码的DER格式。 4.对比转换后的111.txt文件和通过openssl生成的private.der文件可看到2个文件完全一致。 通过hexview打开private.pem可以看到原始ASN.1编码 为便于后续分析我们使用专业解析工具ASN.1 Editor打开private.pem或者private.der文件以ASN.1编码形式查看如下图关于ASN.1如何理解请阅读上篇文章 在2.1章节总结当version为0时私钥格式为 PrivateKeyInfo :: SEQUENCE {version Version,privateKeyAlgorithm :: SEQUENCE {algorithm OBJECT IDENTIFIER,parameters ANY DEFINED BY algoarithm OPTIONAL}privateKey :: OCTET STRINGRSAPrivateKey :: SEQUENCE {version Version,modulus INTEGER, --npublicExponent INTEGER, --eprivateExponent INTEGER, --dprime1 INTEGER, --pprime2 INTEGER, --qexponent1 INTEGER,--d mod (p-1)exponent2 INTEGER,--d mod (q-1)coefficient INTEGER, -- (inverse of q) mod potherPrimeInfos OtherPrimeInfos OPTIONAL}attributes [0] IMPLICIT Attributes OPTIONAL }对照解析如下 1.整个文件就是1个SEQUENCE的TLV。T为30指明是个SEQUENCE。L是82 04 BD指明V的长度为0x04BD即1213个字节 2.随后是SEQUENCE的值内容。内容区应包含三个部分1个Version、1个SEQUENCE、1个OCTET STRING其中Version为0如下图符合预期 3.SEQUENCE为privateKeyAlgorithm。包含1个类型为OBJECT IDENTIFIER的algorithm和1个parameters。如下图30为SEQUENCE的T0D为SEQUENCE的L06为algorithm的L09为algorithm的长度algorithm的值为2A 86 48 86 F7 0D 01 01 01共9个字节且值符合2.1章节的分析。parameters为NULL类型 4.OCTET STRING为privateKey即存储的私钥信息。首先是个SEQUENCE包裹内容SEQUENCE中包含9个INTEGERotherPrimeInfos为可选的本次证书里没有该内容。 5.2 公钥 通过openssl命令从私钥中生成公钥命令如下 openssl rsa -pubout -in private.pem -out public.pem 同样适用ASN.1 Editor打开公钥public.pem。可以看到公钥整体有1个SEQUENCESEQUENCE中包含1个SEQUENCE和1个BIT_STRINGBIT_STRING中是1个SEQUENCE符合第3章节的X.509的公钥结构。 具体解读不再赘述。可参考5.1章节对私钥的解读按照相同方式解读。 6.总结 本文在前4个章节主要基于相关RFC文档的解读简单介绍RSA算法的公私钥如何保存到文件中即RFC相关文档定义了公私钥保存的格式随后使用ASN.1编码对相关内容进行编码并按照RFC定义的格式保存到文件中。实际保存到文件中还涉及两种格式1.原始ASN.1编码以二进制文件格式保存到文件中。2.对原始ASN.1进行BASE64编码随后添加一个可文本阅读的头和尾形成pem格式的可阅读文本文件。在第5章节结合OPENSSL实际生成的公私钥进行验证。 本文仅介绍了最简单也是最常见情况下的公私钥存储情况不涉及加密保存的公私钥等场景。若需深入研究可继续阅读本文中罗列的RFC文档。
http://www.hkea.cn/news/14581305/

相关文章:

  • 做网站 学什么wordpress模板放在哪里
  • 网站自助制作wordpress手机全部显示
  • 东莞想做网站找什么公司织梦菜谱网站模板免费下载
  • 著名建筑设计网站开发网站需求设计
  • 桐乡住房和建设局网站铁盒 东莞网站建设
  • 政务门户网站建设信息凡科快图 免费
  • 58同城 网站建设自己怎么做商城网站吗
  • 定制网站建设广告网站开发建设账务处理程序
  • 安徽省住房城乡建设厅网站中国菲律宾概念股
  • wordpress 做企业网站做网站怎么接业务
  • 如何服务器ip地址做网站商场网站建设
  • 网站开发最后五个阶段WordPress无法写博客头像
  • 北京网站搭建多少钱国外办公室设计欣赏
  • 台州国强建设网站购物网站建设项目策划书
  • 校园微网站建设方案无人在线观看高清视频8
  • 江门建站模板搭建网站整体形象策划与包装
  • 蚌埠北京网站建设找素材的网站
  • 泉港做网站公司个人网站建设维护
  • wordpress 仿站天润网站建设
  • 个体户可以网站备案吗公司网站建设的视频教程
  • 求一个手机能看的网站单页网站seo优化
  • 宁波网站建设排名寿光网站建设
  • 珠海医疗网站建设如果网站没有做icp备案会被处罚
  • 网站恢复正常成都手机网站建设报价表
  • 网站seo方案撰写国家企业信用信息查询全国
  • 怎么找到php网站的首页面htmlppt网站源码
  • 小学学校网站建设方案苏州建网
  • 网站重要组成部分青岛网站建设工作室
  • 网站相互推广怎么做一站式服务就像一个什么
  • 手车做网课网站2022年最新国际新闻