公钥加密

RSA公钥私钥的作用

戏子无情 提交于 2020-03-20 11:06:35
RSA算法广泛应用与加密与认证两个领域 1.加密(保证数据安全性) 使用公钥加密,需使用私钥解密。 这种广泛应用在保证数据的安全性的方面,用户将自己的公钥广播出去,所有人给该用户发数据时使用该公钥加密,但是只有该用户可以使用自己的私钥解密,保证了数据的安全性。 2.认证(用于身份判断) 使用私钥签名,需使用公钥验证签名。 用户同样将自己的公钥广播出去,给别人发送数据时,使用私钥加密,在这里,我们更乐意称它为签名,然后别人用公钥验证签名,如果解密成功,则可以判断对方的身份。 总结:(摘抄自: https://www.cnblogs.com/scofi/p/6617394.html ) ———————————————— 版权声明:本文为CSDN博主「lijinshanba」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接: https://blog.csdn.net/lijinshanba/article/details/82117041 来源: https://www.cnblogs.com/barry-cbt/p/12530035.html

公钥,私钥和数字签名

泄露秘密 提交于 2020-03-18 11:23:22
一、 公钥 加密 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。 我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用 数字2,就是我的私钥,来解密。这样我就可以保护数据了。 我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥, 只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。 二、 私钥 签名 如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知 道我的公钥是1,那么这种加密有什么用处呢? 但是我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他 解密看是不是c。他用我的公钥1解密,发现果然是c。 这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。 这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是 数字签名 。 总结: 公钥和私钥是成对的,它们互相解密。 公钥加密

看完这篇 HTTPS,和面试官扯皮就没问题了

泄露秘密 提交于 2020-03-17 13:37:24
下面我们来一起学习一下 HTTPS ,首先问你一个问题,为什么有了 HTTP 之后,还需要有 HTTPS ?我突然有个想法,为什么我们面试的时候需要回答 标准答案 呢?为什么我们不说出我们自己的想法和见解,却要记住一些所谓的标准回答呢? 技术还有正确与否吗 ? HTTPS 为什么会出现 一个新技术的出现必定是为了解决某种问题的,那么 HTTPS 解决了 HTTP 的什么问题呢? HTTPS 解决了什么问题 一个简单的回答可能会是 HTTP 它不安全。由于 HTTP 天生明文传输的特性,在 HTTP 的传输过程中,任何人都有可能从中截获、修改或者伪造请求发送,所以可以认为 HTTP 是不安全的;在 HTTP 的传输过程中不会验证通信方的身份,因此 HTTP 信息交换的双方可能会遭到伪装,也就是 没有用户验证 ;在 HTTP 的传输过程中,接收方和发送方并 不会验证报文的完整性 ,综上,为了结局上述问题,HTTPS 应用而生。 什么是 HTTPS 你还记得 HTTP 是怎么定义的吗?HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol) 协议, 它 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范 ,那么我们看一下 HTTPS 是如何定义的 HTTPS 的全称是 Hypertext Transfer

TLS/SSL 梳理

情到浓时终转凉″ 提交于 2020-03-16 03:16:16
数据加密通篇都是为了防止第三方的劫持伪造,保证连接安全, 毫无遮掩的明文传输只有民风淳朴的时候才是安全的。 先是一些基础的内容: 对称加密 最开始为了对数据进行加密,使用的是对称加密算法,即双方协商好一个密钥,传输的时候使用这个密钥对数据进行加密和解密,但是这个密钥当然不能使用网络传输,不然同样被第三方劫持就没有意义了,所以只能私下协商交换密钥。 最开始的DES(Data Encryption Standard)对称加密算法使用的是56bit的密钥,这个密钥稍微有点短,在后来完全可以暴力破解加密信息,对于56位的密码,只需要2的56次方就可以暴力穷举。 然后又有了新的算法,triple—DES也交3DES,三重加密算法,最高168位密钥,还有AES,以前搭梯子的时候经常能见到,最高256bit密钥,安全性和速度都很出色。 但是,和谁通信都私下传密钥明显不现实,于是就有了 非对称加密 各自有个私钥,使用公钥传输,全程只暴露公钥,具体过程: A先用自己的私钥加密数据,然后传递公钥和密文给B,B可以用自己的私钥解密 (在一篇文章中提到,使用私钥加密的是hash值,而数据本身是明文的,因为使用密钥加密任意的数据内容存在风险,比如可以刻意的上传一些特定的数据在下载下来,从而破解得到密钥(如RSA),对数据只是payload,所以文章中的逻辑是这样的:A用自己的私钥加密hash

前端加解密方案探讨

假装没事ソ 提交于 2020-03-12 05:58:50
最近在做一个node项目,需要对前端传递给node端的敏感数据进行加密,并在node端对该加密数据进行解密;因为在做node项目之前,与后端配合开发过类似的需求,即前端加密后端解密;所以就尝试采用RSA非对称加密算法来实现。由于第一次采用RSA来完成加解密的整个过程,遇到了不少坑;不过由于种种原因,最后采用了AES的加密方式;下面就来说说前端加解密实现方案。 RSA加解密算法 实现思路 当然首先想到采用的加解密算法就是 RSA ,其关键在于算法的 公钥/秘钥 。其主要用法: 算法生成一份公钥和私钥,其中公钥是公开的,所有人都可以知道,私钥是保密的 用公钥解密,要用私钥解密 于是,基于RSA算法来实现加解密,找到了对应的浏览器端库 jsencrypt 和node端的库 node-rsa 来实现具体的功能。 具体实现思路: 使用 jsencrypt 在前端实现用公玥加密,使用 node-rsa 在node端用私钥解密。 遇到的坑 由于采用的是RSA算法,所以需要前后端约定具体的公钥和私钥。怎么生存公钥私钥呢? 于是根据 jsencrypt 库的介绍,使用 openssl 方式来生成对应的公钥和私钥。于是生成的公钥和私钥大概是如下样子: // 私钥 -----BEGIN RSA PRIVATE KEY-----

iOS 用密钥对数据加密解密

╄→尐↘猪︶ㄣ 提交于 2020-03-11 03:09:14
引言 在iOS App开发中,我们需要对账户,密码等个人私密信息进行加密处理,从而保证用户信息的安全。那么可以将这些私密信息保存到钥匙串(keychain)中,因为钥匙串的不可见性,可以保证用户私密信息的安全。 值得注意的是,将明文存入钥匙串中是不安全的。因此可以将用户私密信息通过算法加密后再存进钥匙串中,这样就更进一步的保证了用户的信息安全。 常用的加密算法 加密算法 = 对称性加密算法 + 非对称性加密算法 说明:加密算法通常分为对称加密算法和非对称假面算法。 一、 对称加密算法: 原理:信息接收双方都需要事先知道密钥和加密解密算法,并且这个密钥是相同的,之后就可以对数据进行加密解密了。 常见的有:AES,DES,3DES: AES(Advanced Encryption Standard): 高级加密标准,是下一代的加密算法标准,速度快,安全级别高。 DES(Data Encryption Standard): 数据加密标准,速度较快,适用加密大量的数据。 3DES(Triple DES):是基于DES,对一块数据用三种不同的密钥进行三次加密,强度较DES更高。 二、 非对称性加密算法: 原理:通信双方A,B事先生成一个密钥对(私钥+公钥),然后A将自己的公钥发送给B,B也将自己的公钥发送给A,即通信双方将各自的公钥做一个交换。如果A要给B发送一条秘密电报

科普-- 白话HTTPS

会有一股神秘感。 提交于 2020-03-10 05:59:06
HTTPS是传输协议 吗? HTTPS与HTTP有什么关系? HTTPS为什么会安全? 闲扯一下 Mac笔记本、Windows台式机、Linux主机。像这三种类型,它们硬件不同,系统不同,服务端处理的编程语言不同。它们之间却可以在网络的世界了自由联通。靠的是什么呢? 靠的是它们遵守相同的规则(如:HTTP)。应用层用什么格式(语言编码,报文字段)封装报文、传输层如何将大量的数据分段,并给每帧数据添加编号和端口信息、网络层如何给没帧数据添加IP地址,目标MAC地址、数据链路层如何将数字信息通过网卡发出去。 HTTPS是传输协议吗? 目前常见的应用层协议 ​ 好像没有看到HTTPS啊? 没错,HTTPS并非TCP/IP协议族中的一员,它其实是HTTP协议+SSL协议的组合体,是披着SSL外衣的HTTP。 HTTPS与HTTP有什么关系? HTTP实现的功能 :一种机制简单(这也是从早期众多传输协议中走出来的原因)的超文本传输协议,为客户端和服务器通信服务,是处在TCP/IP协议族中的应用层协议。 HTTP在发送请求时,采用四层架构。 应用层:提供多种应用服务,如:HTTP FTP DNS等,可以直接提供给开发者使用。 传输层:网络间数据的传输,如: TCP TDP,报文 数据分割打包成帧 网络层:处理网络中流动的数据包,在复杂的网络段中选择一条传输路线,将数据包送到目的地

数字证书简介及Java编码实现

旧时模样 提交于 2020-03-07 02:22:06
数字签名原理简介(附数字证书) 首先要了解什么叫对称加密和非对称加密,消息摘要这些知识。 1. 非对称加密 在通信双方,如果使用非对称加密,一般遵从这样的原则:公钥加密,私钥解密。同时,一般一个密钥加密,另一个密钥就可以解密。 因为公钥是公开的,如果用来解密,那么就很容易被不必要的人解密消息。因此, 私钥也可以认为是个人身份的证明。 如果通信双方需要互发消息,那么应该建立两套非对称加密的机制(即两对公私钥密钥对),发消息的一方使用对方的公钥进行加密,接收消息的一方使用自己的私钥解密。 2.消息摘要 消息摘要可以将消息哈希转换成一个固定长度的值唯一的字符串。值唯一的意思是不同的消息转换的摘要是不同的,并且能够确保唯一。 该过程不可逆 ,即不能通过摘要反推明文(似乎SHA1已经可以被破解了,SHA2还没有。一般认为不可破解,或者破解需要耗费太多时间,性价比低)。 利用这一特性, 可以验证消息的完整性。 消息摘要通常用在数字签名中,下面介绍用法。 了解基础知识之后,就可以看一下数字签名和数字证书了。 3.数字签名 假设现在有通信双方A和B,两者之间使用两套非对称加密机制。 现在A向B发消息。 那么,如果在发送过程中,有人修改了里面密文消息,B拿到的密文,解密之后得到明文,并非A所发送的,信息不正确。 要解决两个问题:1. A的身份认证 2. A发送的消息完整性

RSA 算法简述

末鹿安然 提交于 2020-03-04 00:36:55
RSA是什么 计算机的加密技术分为对称加密和非对称加密两类。在对称加密中,信息的加解密使用同一秘钥key,其可简化加解密的过程,较为简单,但不足之处在于由于加解密使用同一个key,信息传送双方都要接触这个key,密钥key更容易泄露。 在公开密钥加密即非对称加密中,密钥分为公钥PK(发送方通过PK对数据加密,然后发送给接收方,PK可公开),私钥SK(SK解密方保存,接收方通过SK对密文解密,SK不公开)。RSA公钥密码体制是最具代表性的非对称加密方式。 RSA算法原理 RSA定理:若P和Q是两个相异质数,另有正整数D和E,其中E的值与 (P-1)(Q-1)的值互质,并使得DE%(P-1)(Q-1)=1,有正整数M,且M<PQ,设: C=ME%PQ,B=CD%PQ,则有M=B。 生成公钥和密钥 随意选择两个大的素数P和Q,且P不等于Q 令N=PQ 令T=(P-1)(Q-1) 选择一个整数E,作为一个密钥,使E与T互质(即E与T的最大公约数为1),且E必须小于T 由公式DE%T=1,计算得到D的值,作为另一密钥 将(N,E)作为公钥,(N,D)作为私钥,当然也可互换。 用公钥加密信息 发送方收到公钥(N,E)后,通过公钥对数据进行加密,操作如下: 明文:M 加密:ME%N=C 密文:C 用私钥解密信息 接收方收到密文C后,通过私钥(N,D)进行解密,得到明文M,操作如下: 密文:C

PKI详解

╄→尐↘猪︶ㄣ 提交于 2020-03-03 13:36:26
预备: 一、密码基元 二、密钥管理 三、PKI本质是把非对称密钥管理标准化 PKI 是 Public Key Infrastructure 的缩写,其主要功能是绑定证书持有者的身份和相关的密钥对(通过为公钥及相关的用户身份信息签发数字证书),为用户提供方便的证书申请、证书作废、证书获取、证书状态查询的途径,并利用数字证书及相关的各种服务(证书发布,黑名单发布,时间戳服务等)实现通信中各实体的身份认证、完整性、抗抵赖性和保密性。 数字证书分类 一、 什么是PKI? 官方定义:PKI是Public Key Infrastructure的首字母缩写,翻译过来就是公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。PKI技术是一种遵循既定标准的密钥管理平台,它的基础是加密技术,核心是证书服务,支持集中自动的密钥管理和密钥分配,能够为所有的网络应用提供加密和数字签名等密码服务及所需要的密钥和证书管理体系。 通俗理解:PKI就是利用公开密钥理论和技术建立提供安全服务的、具有通用性的基础设施,是创建、颁发、管理、注销公钥证书所涉及的所有软件、硬件集合体,PKI可以用来建立不同实体间的"信任"关系,它是目前网络安全建设的基础与核心。PKI的主要任务是在开放环境中为开放性业务提供基于非对称密钥密码技术的一系列安全服务,包括身份证书和密钥管理、机密性