非对称加密

使用openssl实现RSA非对称加密

旧巷老猫 提交于 2020-01-08 03:23:28
生成公钥私钥 使用命令生成私钥 openssl genrsa -out rsa_private_key.pem 1024 参数:genrsa 生成密钥 -out 输出到文件 rsa_private_key.pem 文件名 1024 长度 从私钥中提取公钥: openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem shell加解密 vim a.txt ubuntu@ubuntu-vm:~/workspace/encryption$ cat a.txt 123456 使用公钥加密: openssl rsautl -encrypt -in a.txt -inkey rsa_public_key.pem -pubin -out b.txt 参数: rsautl 加解密 -encrypt 加密 -in 从文件输入 a.txt 文件名 -inkey 输入的密钥 rsa_public_key.pem 上一步生成的公钥 -pubin 表名输入是公钥文件 -out输出到文件 b.txt 输出文件名 使用私钥解密: openssl rsautl -decrypt -in b.txt -inkey rsa_private_key.pem -out c.txt 参数: -decrypt 解密 -in 从文件输入 b.txt

Crypto++应用:非对称加密RSA

。_饼干妹妹 提交于 2020-01-04 04:02:12
1,非对称加密RSA: (1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。 (2)甲方获取乙方的公钥,然后用它对信息加密。 (3)乙方得到加密后的信息,用私钥解密。 2,使用CryptoPP实现RSA: CryptoPP是一套非常完整的加密解密开源解决方案,如何使用这里就不多说了,请自行Google。 1 #include "..\cryptopp562\randpool.h" 2 #include "..\cryptopp562\osrng.h" 3 #include "..\cryptopp562\rsa.h" 4 5 //待加密的字符串 6 string message = "http://my.oschina.net/xlplbo/blog"; 7 printf("message = %s, length = %d\n", message.c_str(), strlen(message.c_str())); 8 9 /* 10 //自动生成随机数据 11 byte seed[600] = ""; 12 AutoSeededRandomPool rnd; 13 rnd.GenerateBlock(seed, sizeof(seed)); 14 printf("seed = %s\n", (char *)seed, strlen((char

使用jwt和rsa非对称加密无状态登录

╄→尐↘猪︶ㄣ 提交于 2019-12-31 17:04:20
首先,说一下大概的流程。 用户登录时,会将页面输入的账户密码传入对应的微服务中,而现在微服务中还没有当前用户的认证,由此微服务再转发给注册中心,注册中心再访问用户中心,用户中心通过调取数据库中的信息, 对传过来的信息进行核对,核实正确后使用非对称加密形成一个公钥与私钥,私钥自己保存,公钥分发给各个微服务,然后用户再次登录时,当前的微服务就拥有公钥,通过公钥解密就可以验证用户 是否正确。正确就放行通过。   jwt含有三个部分,分别是Header,载荷,签名。   header:包含有jwt 当前的声明的定义,还有base64算法。   载荷:主要存放当前的有效信息。   签名:主要是对header与负载中的有效信息使用密钥加密生成token。    授权流程: 1、用户请求登录,携带用户名密码到授权中心 2、授权中心携带用户名密码,到用户中心查询用户 3、查询如果正确,生成JWT凭证 4、返回JWT给用户 鉴权流程: 1、用户请求某微服务功能,携带JWT 2、微服务将jwt交给授权中心校验 3、授权中心返回校验结果到微服务 4、微服务判断校验结果,成功或失败 5、失败则直接返回401 6、成功则处理业务并返回 来源: https://www.cnblogs.com/zyhxiaochen/p/12125202.html

公钥和私钥

落爺英雄遲暮 提交于 2019-12-24 14:07:21
一直以来对公钥和私钥都理解得不是很透彻,感觉到模棱两可。今天在网上找了半天,通过查看对这个密钥对的理解,总算弄清楚了。 公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。 用电子邮件的方式说明一下原理。 使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的: 1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。 2. 必须保证是我发送的邮件,不是别人冒充我的。 要达到这样的目标必须发送邮件的 两人都有公钥和私钥 。 公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。私钥,就是自己的,必须非常小心保存,最好加上 密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。 公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能 用公钥解密。 比如说,我要给你发送一个加密的邮件。首先,我必须拥有你的公钥,你也必须拥有我的公钥。 首先,我用你的公钥给这个邮件加密,这样就保证这个邮件不被别人看到,而且保证这个邮件在传送过程中没有被修改。你收到邮件后,用 你的私钥就可以解密 ,就能看到内容。 其次我用我的私钥给这个邮件加密,发送到你手里后,你可以用我的公钥解密。因为私钥只有我手里有,这样就保证了这个邮件是我发送的。 当A->B资料时,A会使用 B的公钥加密

非对称加密远离及实现

为君一笑 提交于 2019-12-23 18:35:34
1. 为什么要使用非对称加密 非对称加密提供了数据加密(防窃听)和数字签名(防篡改)这两个功能 然而这两个功能分别有更简单的实现方式: 对称加密和散列运算 那为什么还需要非对称加密呢? 小明 发送内容 "1" 和md5值(验证数据是否被篡改)给小红, 小红 发送用AES加密后的“2”给小明。 如下图: 内容“1”可以在网络的传输中被篡改成“2”,然后加生成“2”的唯一值,最后小红收到的是“2”和“2”的md5值。小红会认为信息是没有被篡改的。 只要网络中有人获得了他们的秘钥(秘钥需要传一次),就可以对小红发送的消息进行解密。如下图: 2. 什么是非对称加密? 首先说一下对称加密: 对称加密就是用同一个秘钥对数据进行加解密。 那么非对称加密:使用不同的秘钥对数据进行加解密。 小明用私钥对内容加密,同时将公钥发送到网络中, 小红通过公钥对数据进行解密。返回信息给小明的时候,用小明的公钥进行加密,然后小明通过私钥进行解密。 完成通信流程。 3.使用python 实现加密算法 安装pip install pycrypt 生成公私钥 $ ssh-keygen -t rsa -C your_email 代码连接在参考内容可获取 参考内容: https://www.youtube.com/watch?v=OKIfTOEo7P0 https://github.com/wxnacy/study

为什么HTTPS比HTTP更安全?

风格不统一 提交于 2019-12-21 11:03:24
摘要: 理解HTTPS。 作者: 浪里行舟 Fundebug 经授权转载,版权归原作者所有。 前言 近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。 读完本文,希望你能明白: HTTP通信存在什么问题 HTTPS如何改进HTTP存在那些问题 HTTPS工作原理是什么 想阅读更多优质文章请猛戳 GitHub博客 ,一年五十篇优质文章等着你! 一、什么是HTTPS HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。 HTTPS主要作用是: (1)对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全; (2)对网站服务器进行真实身份认证。 我们经常会在Web的登录页面和购物结算界面等使用HTTPS通信。使用HTTPS通信时,不再用 http:// ,而是改用 https:// 。另外,当浏览器访问HTTPS通信有效的Web网站时,浏览器的地址栏内会出现一个带锁的标记。对HTTPS的显示方式会因浏览器的不同而有所改变。 二、为什么需要HTTPS

2 - 数字证书

≡放荡痞女 提交于 2019-12-19 04:11:27
  上文介绍了数字签名,它能够(1)确认发送方身份(2)保证发送数据完整性   但是存在一定漏洞,这个漏洞不在数字签名技术本身,而在于它所以来的密钥,只有密钥真是可靠,使用数字签名才是安全有效的。   考虑这种可能的情况:在上述发送方向接收方传送报文的例子中,如果发送方所持有的公钥来路有问题或是被替换了,那么,持有对应私钥的冒充接受方就有可能接收到发送方发送的报文。这里的问题就是:对于请求方来说,它怎么能确定它所得到的公钥一定是从目标主机那里发布的,而且没有被篡改过呢?亦或者请求的目标主机本本身就从事窃取用户信息的不正当行为呢?这时候,我们需要有一个权威的值得信赖的第三方机构(一般是由政府审核并授权的机构)来统一对外发放主机机构的公钥,只要请求方这种机构获取公钥,就避免了上述问题的发生。这种机构被称为证书权威机构(Certificate Authority, CA),它们所发放的包含主机机构名称、公钥在内的文件就是人们所说的“数字证书”。   数字证书的颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动

对称加密 与 非对称加密

我的梦境 提交于 2019-12-10 14:46:36
明文: 没有被加密过的内容 密文: 已经被加密的内容 算法: 通过算法对明文进行加密,如移位,置换 密钥: 加密时需要的密码,知道算法和密钥才能解密 加密: 输入密钥后,用算法对内容进行加密 解密: 输入密钥后,用算法对内容进行解密 对称加密: 举个例子说明: Alice 在盒子里放有信息,盒子上有一把锁,她有钥匙。通过邮局她把这个盒子寄给Bob。Bob收到盒子后,用相同的钥匙打开盒子(钥匙之前就得到了,可能是Alice面对面给他的)。然后Bob可以用同样的方法回复。 非对称加密: Bob和Alice各有自己的盒子。Alice要跟Bob秘密通信,她先让Bob把开着的盒子通过邮局发给她。Alice拿到盒子后放入信息锁上,然后发给Bob。Bob就可以用他自己的钥匙打开了。回复的话就用同样的方法。 非对称算法在 加密 和 解密 时用的是 不同的钥匙 。 信息接受者 有两把钥匙: 一把“公匙” , 一把“私匙” 。公匙是给信息发送者用来加密的,私匙是自己用来解密的这样最大的好处是:不必通过不安全的渠道发送私密的东西。公匙本来就是给别人用的,不用藏好。你的私匙在你产生私匙的电脑里保存着 网站如何通过加密和用户安全通信: SSL/TLS 是用来保障你的 浏览器 和 网站服务器 之间安全通信,免受网络“中间人”窃取信息。SSL原理很简单。当你的浏览器向服务器请求一个安全的网页(通常是 https

对称加密 非对称加密总结

喜夏-厌秋 提交于 2019-12-10 09:48:50
对称加密 :A与 B 之间之间的通讯数据都用同一套的密钥来进行加密解密。 优点 简单快捷,密钥较短,且破译困难。 缺点 如果用户一旦多的话,管理密钥也是一种困难。不方便直接沟通的两个用户之间怎么确定密钥也需要考虑,这其中就会有密钥泄露的风险,以及存在更换密钥的需求。 对称加密通常有 DES,IDEA,3DES 加密算法。 非对称加密 :用公钥和私钥来加解密的算法。打个比方,A 的公钥加密过的东西只能通过 A 的私钥来解密;同理,A 的私钥加密过的东西只能通过 A 的公钥来解密。顾名思义,公钥是公开的,别人可以获取的到;私钥是私有的,只能自己拥有。 缺点 加解密比对称加密耗时. 优点 比对称加密安全. 但是非对称加密也是存在漏洞,因为公钥是公开的,如果有 C 冒充 B 的身份利用 A 的公钥给 A 发消息,这样就乱套了,所以接下来就采用非对称加密+摘要算法+数字签名的机制来确保传输安全。 常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用) Hash算法(摘要算法) Hash算法的特点是单向不可还原,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。只要源数据不同,算法得到的摘要必定不同。

详解Https出现的前因后果

我是研究僧i 提交于 2019-12-07 16:34:23
虽然自己不直接从事互联网行业,但是对互联网行业的技术一直没有放松学习,特别是安全方面一直是我薄弱的方面,所以最近踏下心来好好的研究了下互联网安全方面的内容。 网上关于SSL、Https的学习资料比较多,有些讲的太宽泛,有些讲的又不容易理解,我以自己的角度和自己的顺序来好好摸清这些内容。 首先澄清3个概念:SSL、TLS、Https。 SSL:Secure Sockets Layer,中文“安全套接层” TLS:Transport Layer Security,中文“传输层安全协议”,是SSL在1999年标准化后的新名称,基本可以跟SSL做约等号。 HTTPS:Http Over TLS,字面意思就是基于TLS的Http传输。 众所周知Https比Http更安全,从定义中可以看出安全来自于TLS,TLS就是我们要集中力量学习的重点。 SSL/TLS不仅可以被Http over,还可以被其它多种协议Over,比如:FTP、SMTP、POP、Telnet等 问题来了SSL/TLS凭什么更安全? 首先我们看看Http协议存在的安全问题: 1 钓鱼被骗,访问伪造的服务端 2 明文被捕获,敏感信息泄露 3 明文被捕获后篡改内容 4 不管什么报文,重复发起 由于单纯的Http协议具有上面这些风险,那我们理想中的协议应该具备以下特性: 安全性,防止被偷窥,就是对内容加密,被偷窥了别人也看不懂。