https加密解密过程二、名词解析及文件生成

news2024/12/26 10:53:59

https加密解密过程二、名词解析及文件生成

密钥仓库keystore文件

Keytool是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中

keystore文件的内容其实就是把私钥、公钥以及公钥对应的地址等信息输出为json格式的数据

在keystore里,包含两种数据:

密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
可信任的证书实体(trusted certificate entries)——只包含公钥
Keystore可以简单理解为一个存放应用签名的文件。我们可以称它为秘钥库,是为了保护我们自己开发的应用的。

通过秘钥,可以证明这个APP是由某个个人或者企业开发的。在生成KeyStore的时候,开发者会录入自己姓名、单位、组织、所在城市、省份、国家代码等信息。

keytool -genkeypair -alias MetersPhereTestPCK -keypass 123456 -keyalg RSA -keysize 2048 -validity 36500 -storetype PKCS12 -keystore D:/p12/MetersPhereTestPCK.keystore

这个命令是jdk自带的,在cmd窗口执行即可
在这里插入图片描述

如果报错

keytool 错误: java.security.KeyStoreException: Unrecognized keystore format. Please load it with a specified type

我也不知道为什么,我的方式是删除文件再重建,且换个名字,同时把指令里的额名字也换了,然后打开新的cmd窗口,多试几次,就成功了

命令解释:
• -genkey 表示要创建一个新的密钥。 

• -alias 表示 keystore 的别名。 

• -keyalg 表示使用的加密算法是 RSA。

• -keysize 表示密钥的长度.。

• -keystore 表示生成的密钥存放位直。 

• -validity 表示密钥的有效时间,单位为天。

•-storepass 指定访问密钥库的密码。

•-storetype :密钥库类型,这里设置为 PKCS12 

•-sigalg:签名算法,当密钥算法设为RSA时,可以设置的签名算法有:MD5withRSA、SHA1withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA,这里咱们没有用到

在这里插入图片描述

再次返回文件目录检查文件,文件内已经有内容了
在这里插入图片描述

经过上述操作,秘钥库中已经创建了数字证书(没有经过CA认证),但不影响我们使用。我们可以将数字证书导出,发送给合作伙伴进行加密交互

.p12(PKCS #12)

我的理解就是和keystore是一个东西,只是不同的格式
我们的每一个keystore都可以生成一个.p12文件,这个文件是一个加密的文件,只要知道其密码,就可以供给所有的系统设备使用,使设备不需要在重新申请开发和发布证书,就能使用。
二进制格式,同时包含证书和私钥,一般有密码保护。
注意:一般.p12文件是给与别人使用的,本机必须已经有一个带秘钥的证书才可以生成.p12文件
.keyStore一般存放的是(服务器端或客户端)证书与密钥,或直接存放 .p12 文件包。
.p12一般存放的是生成的(服务器端或客户端)证书与密钥,类似打包存放。

有加密解密,肯定伴随而来的会有一套标准存在,就像我们的社会一样,法律,规定都是必不可少的;由RSA实验室和其他安全系统开发商为促进公钥密码的发展而制定的一些列标准–PKCS(公钥加密标准)。它至今共发不过15个标准,常用标准有:

PKCS#7:密码消息语法标准;
PKCS#10:证书请求语法标准;文件用于证书签发申请;
PKCS#12:个人信息交换语法标准;文件可作为Java中的秘钥库或信任度直接使用。
.p12则是PKCS#12文件名后缀的一种,所以常用来被传送私钥,用来解密使用。

其实说来说去,他们同属于“数字证书”;什么是数字证书呢?数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(CertificateAuthority)中心发行的,人们可以在网上用它来识别对方的身份。在当今这个互联网时代,已经成为了必不可少,不可或缺的一个过程。

然后根据生成的srore文件导出p12文件

keytool -importkeystore -srckeystore D:/p12/MetersPhereTestPCK.keystore -destkeystore D:/p12/MetersPhereTestPCK.p12 -srcalias MetersPhereTestPCK -destalias MetersPhereTestPCK -srcstoretype JKS -deststoretype PKCS12 -noprompt

在这里插入图片描述

查看生成了对应的文件
在这里插入图片描述

指令对应的含义

-importkeystore  从其他秘钥库导入一个或所有条目
-srckeystore 原来keystore文件所在位置
-destkeystore 生成的p12文件的位置
-deststoretype 目标密钥库类型
-srcstorepass :源密钥库密码,这里的设置值与步骤3中的storepass对应;
-noprompt 无提示
-srcalias 当指定了srcalias选项时,该命令将别名对应的条目导入至目标密钥库中。若未指定destalias选项,则会使用srcalias选项作为目标别名。若源条目受密码保护,需要通过srckeypass选项指定,用于恢复条目。当未指定srckeypass选项时,会尝试使用srcstorepass选项恢复条目。当未指定srcstorepass选项或不正确时,会提示用户输入密码。目标条目将会使用destkeypass作为密码进行保护。若未指定destkeypass选项,则会使用源条目密码进行保护。
当未指定srcalias选项时,源密钥库中的全部条目都会会导入目标密钥库中。每个目标密钥库中的条目都会使用源密钥库对应的别名存储。若源条目受密码保护,srcstorepass选项为源密钥库密码用于恢复条目。若srcstorepass选项未指定或不正确,会提示用户输入密码。当源密钥库中某个条目的类型不受目标密钥库支持时,或将条目存储至目标密钥库时出现错误时,将会提示用户跳过当前条目并继续,还是退出。目标条目会使用源条目的密码进行保护。
当目标别名已在目标密钥库中存在时,会提示用户覆盖对应的条目还是创建新的别名。

这一段我没看懂,只知道destalias和srcalias跟上我们在生成store文件时候的alias 参数就可以

声明:为什么-srcstoretype JKS,JKS和store明明是两种格式,为什么这里是JKS我也不清楚,以后明白了再来填坑

.key私钥文件

命令如下

openssl pkcs12 -in D:/p12/MetersPhereTestPCK.p12 -nocerts -nodes -out D:/p12/MetersPhereTestPCK.key

我们需要安装一下openssl
下载连接
全功能的是不带light的,我们下载带light基本功能的就行
在这里插入图片描述
下载下来傻瓜式安装即可,然后配置环境变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

.cer公钥文件

可以是二进制格式(der),可以是文本格式(pem)。只包含证书,不保存私钥。一般Linux使用.crt后缀,.cer是windows后缀。

keytool -export -alias MetersPhereTestPCK -keystore D:/p12/MetersPhereTestPCK.keystore -rfc -file D:/p12/MetersPhereTestPCK.cer

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git的基础操作

git的基础操作 一、Git理论 (一)工作区域 基本概念: 工作区:平时存放项目代码的地方。 暂存区(Stage/Index):暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到…

(四)DepthAI-python相关接口:OAK Messages

消息快播:OpenCV众筹了一款ROS2机器人rae,开源、功能强、上手简单。来瞅瞅~ 编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查…

mapstruct常见错误及解决方案

1 问题集合 mapstruct-jdk8 编译报错 我以前项目使用的是mapstruct-jdk8<1.3.1.Final &#xff0c;现在做改造升级&#xff0c;比如springboot升级等&#xff0c;但是报错了 我们去mvn仓库去看下&#xff1a; Deprecated MapStruct artifact containing annotations to …

Postman之CSV或JOSN文件实现数据驱动

目录 一、适用场景 二、接口信息 三、数据驱动实现 3.1.data.文件设置 3.1.1.data.csv文件设置 3.1.2.data.json文件设置 3.3.接口传参设置 3.4.断言设置 四、执行结果 4.1.data.csv执行脚本上传设置 4.2.data.json执行脚本上传设置​ 4.3.执行结果展示 一、适用场…

12 【操作mongodb数据库】

12 【操作mongodb数据库】 1.简介 1.Mongoose是一个让我们可以通过Node来操作MongoDB的模块。2.Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进一步的优化封装&#xff0c;并提供了更多的功能。在大多数情况下&#xff0c;它被用来把结构化的模式应用…

Stable Diffusion 关键词tag语法教程

Stable Diffusion 关键词tag语法教程 AI绘图在线体验 二次元绘图 在线体验地址:Stable Diffusion 模型包括&#xff1a; NovelAI&#xff0c;NovelAI的模型训练使用了数千个网站的数十亿张图片&#xff0c;包括 Pixiv、Twitter、DeviantArt、Tumblr等网站的作品。 Waifu&am…

Flink系列之大数据分布式计算引擎设计实现剖析

声明&#xff1a; 文章中代码及相关语句为自己根据相应理解编写&#xff0c;文章中出现的相关图片为自己实践中的截图和相关技术对应的图片&#xff0c;若有相关异议&#xff0c;请联系删除。感谢。转载请注明出处&#xff0c;感谢。 By luoyepiaoxue2014 B站&#xff…

MySQL基本语句操作

目录 一. MySQKL基本操作命令&#xff08;增&#xff0c;删&#xff0c;该&#xff0c;查&#xff09; 1.1 基本概述 1.2 查看当前服务器种的数据库 1.3 查看数据库结构​编辑 二.SQL语句 三. 创建及删除数据库和表 3.1 创建新的数据库 3.2 创建新的表 ​3.3 删除指…

c++随机数问题研究

1、问题背景 某项目中有个复杂的排序&#xff0c;先是各种规则依次排序&#xff0c;最后如果依然并列的话&#xff0c;那就随机位置&#xff0c;名次并列。测试中发现一个诡异现象&#xff0c;并列时随机排序但随机后2个case打印的顺序每次都一样&#xff0c;随机数没有起到任…

基于PHP+MySQL个人信息管理系统的设计与实现

随着现代工作的日趋繁忙,人们越来越意识到信息管理的重要性与必要性,而具有个性化特色的个人信息管理系统能够高速有效的管理个人信息,从而提升自己的工作效率。该系统的基本功能包括用户登录,个人信息管理,通信名录管理,日程备忘管理,财物管理,随手笔记管理,修改密码等功能。 …

html+css+javascript+jquery+bootstarp响应式旅行社旅游平台网站模板(14页)

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

[附源码]Python计算机毕业设计SSM考试排考系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

乾元通多卡聚合设备 消防行业应用解决方案

近年来,灭火救援工作呈现出突发性强、处置难度大、作战时间长等特点&#xff0c;如何获取灾害现场的第一手资料为救援行动提供决策依据&#xff0c;如何在处置灾害事故的过程中保证多个消防队伍协同配合、指令畅通&#xff0c;对室外无线环境下的视/音频即时通信&#xff0c;提…

深度学习——池化层笔记+代码

1.对于卷积层来说&#xff0c;卷积对位置比降敏感 ①检测垂直边缘 使用K[-1,1] 的卷积核进行卷积操作&#xff0c;实现垂直边缘信息的检测 如果因为抖动曝光啥的同一个物体&#xff0c;1像素可能往右移位了。K的卷积核就得不到相应位置的边缘信息。 ②需要一定程度的平移不变性…

代码随想录训练营第36天|LeetCode 435. 无重叠区间、763.划分字母区间、 56. 合并区间

参考 代码随想录 题目一&#xff1a;LeetCode 435.无重叠区间 怎么判断重叠 按照题目给出的示例&#xff0c;第一个区间的右边界与第二个区间的左边界重合不算重叠。对于区间问题&#xff0c;一般都要对区间进行排序&#xff0c;可以按照左边界或者右边界排序。按照个人习惯…

[附源码]Python计算机毕业设计Django二手书店设计论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

8. 抓到Netty一个隐藏很深的内存泄露Bug | 详解Recycler对象池的精妙设计与实现

抓到Netty一个隐藏很深的内存泄露Bug | 详解Recycler对象池的精妙设计与实现 本系列Netty源码解析文章基于 4.1.56.Final版本 最近在 Review Netty 代码的时候&#xff0c;不小心用我的肉眼抓到了一个隐藏很深很深的内存泄露 Bug。 于是笔者将这个故事....哦不 .....事故&#…

介绍一款特别好用的java反编译工具jd-gui

目录 写在前面 开始 写在前面 之前用过另一款java反编译工具jad 但是这个工具有个问题就是对于一些java8的新特性&#xff0c;比如lambda表达式是解析不出来的&#xff0c;更不用说java9和java17了。关于这款工具的使用方法就不再这里赘述了&#xff0c;如果你感兴趣可以在网…

【JVM】主要组成部分及其作用

大致结构 JVM包含两个子系统和两个组件&#xff0c;两个子系统为Class loader(类装载)、 Execution engine(执行引擎)&#xff1b;两个组件为Runtime data area(运行时数据 区)、Native Interface(本地接口)。 Class loader(类装载)&#xff1a;根据给定的全限定名类名(如&…

跳槽有技巧?超强测试开发面试经验等你pick

每一次跳槽&#xff0c;相信大家都有自己的一套方法论&#xff0c;一套准备和选择过程。当然面试也是一个双向选择&#xff0c;不排除有的时候看“缘分”。不管怎么说&#xff0c;这几年来&#xff0c;在面试过大大小小挺多家公司后&#xff0c;也算职场老鸟一枚了&#xff0c;…