公钥加密

对称加密和非对称加密

自闭症网瘾萝莉.ら 提交于 2020-03-02 14:31:03
一:基础概念 A 和 B 要把他们的通信内容加密, 如果A/B使用相同的加密解密key,那这就是 对称加密。 对称加密最大的问题就是A和B之间的加密/解密key必须是唯一的。也就是如果A和C 要加密通信,同时还不想让C知道A/B之间的通信内容。那么A/C之间的加密/解密用的key就不能和A/B之间的一样。 链接一旦便多,这种机制将很难管理大量的key。 非对称加密 就是在此环境下诞生的。非对称加密有公钥和私钥。公钥随意公开,私钥自己私密保存。 比如 A 把公钥发给B, C。 当B,C与A通信时,先把约定好的见面信号用公钥加密,A收到后,用私钥解密,当解密后的数据就是提前约定好的见面信号的话,A 就认为B,C是受信链接。 如果此时D也给A发送信息,但却没有正确的公钥。A就无法得到正确的见面信号,就不会受理D的请求。 二:对称加密 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密 也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高 对称加密算法在电子商务交易过程中存在几个问题: 1、要求提供一条安全的渠道使通讯双方在首次通讯时协商一个共同的密钥

java实现非对称加密

北城余情 提交于 2020-03-02 12:27:24
对称加密:加密和解密的过程使用的是相同的密钥 非对称加密 与对称加密不同,非对称加密算法的加密和解密使用不同的两个密钥.这两个密钥就是我们经常听到的”公开密钥”(公钥)和”私有密钥”(私钥). 公钥和私钥的关系是: 公钥和私钥一般都是成对出现, 如果你的消息使用公钥加密,那么需要该公钥对应的私钥才能解密; 如果你的消息使用私钥加密,那么需要该私钥对应的公钥才能解密. java实现非对称加密 public static void main(String[] args) throws Exception { //原文 String txt = "abc"; System.out.println("需要加密的原始数据"+txt); System.out.println(); //获得密钥对Map Map<String, byte[]> keyMap = getKeyMap(); //获得公钥 String publicKeyStr = encryptBASE64(keyMap.get(PUBLIC_KEY)); System.out.println("公钥\n\r"+publicKeyStr); //获得密钥 String privateKeyStr = encryptBASE64(keyMap.get(PRIVATE_KEY)); System.out.println("私钥\n\r"

iOS 打包签名,你真的懂吗?

烂漫一生 提交于 2020-03-02 09:13:57
iOS签名类型有Development、AD-Hoc、In-House与App Store,而打包过程中又涉及到各种证书、Provision Profile、entitlements、CertificateSigningRequest、p12、AppID......各种概念一大堆,本文将从打包签名的原理说起,并梳理完全签名的整体流程,最后讲解重签名的实现以及签名机制中有哪些需要注意防护的要点。 为了保证App的分发平台是可控的,以及保证所有安装到iOS设备上的App都是经过苹果官方允许的,苹果建立了iOS签名打包机制。要了解iOS签名机制的实现,我们首先从签名机制的原理说起。 1. 签名原理 1.1 不对称加密 网络数据的传输可以使用对称加密以及不对称加密的方式进行安全防护,对称加密是指数据发送者(A)和接收者(B)双方进行加解密的密钥是一致的,但这样会增加密钥自身分发的不安全性:比如要如何保证密钥在传递过程中不被泄露。 而不对称加密则由A、B持有一对公私钥进行加解密,公私钥钥匙是成对出现的。对于一个私钥,有且只有一个与其对应的公钥,私钥保密、公钥公开,但是不能通过公钥推导出私钥,使用私钥加密的文件可用公钥解密,反过来公钥加密的文件也只能用私钥进行解密。加密过程如下: 发送方(A)首先生成一对公私钥钥匙对,私钥自己保管,公钥则任意分发出去

https原理通俗了解

我与影子孤独终老i 提交于 2020-03-02 09:06:19
摘要:本文尝试一步步 还原 HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计过程。在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过程。 我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A能发一个hello消息给B: 如果我们要实现这个聊天软件,本文只考虑安全性问题,要实现 A发给B的hello消息包,即使被中间人拦截到了,也无法得知消息的内容 如何做到真正的安全? 这个问题,很多人马上就想到了各种加密算法,什么对称加密、非对称加密、DES、RSA、XX、噼里啪啦~ 而我想说,加密算法只是 解决方案 ,我们首先要做的是理解我们的 问题域 —— 什么是安全? 我个人的理解是: A与B通信的内容,有且只有A和B有能力看到通信的真正内容 好,问题域已经定义好了(现实中当然不止这一种定义)。对于解决方案,很容易就想到了对消息进行加密。 题外话,但是只有这一种方法吗?我看未必,说不定在将来会出现一种物质打破当前世界的通信假设,实现真正意义上的保密。 对于A与B这样的简单通信模型,我们很容易做出选择: 这就是 对称加密算法 ,其中图中的 密钥S 同时扮演加密和解密的角色。具体细节不是本文范畴。 只要这个密钥S不公开给第三者,同时密钥S足够安全,我们就解决了我们一开始所定问题域了

使用ssh公钥实现免密码登录

佐手、 提交于 2020-03-01 05:07:44
ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例。 有机器A(192.168.1.155),B(192.168.1.181)。现想A通过ssh免密码登录到B。 首先以root账户登陆为例。 1.在A机下生成公钥/私钥对。 [root @A ~ ]# ssh - keygen - t rsa - P '' -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。 该命令将在/root/.ssh目录下面产生一对密钥id_rsa和id_rsa.pub。 一般采用的ssh的rsa密钥: id_rsa 私钥 id_rsa.pub 公钥 下述命令产生不同类型的密钥 ssh-keygen -t dsa ssh-keygen -t rsa ssh-keygen -t rsa1 2.把A机下的/root/.ssh/id_rsa.pub 复制到B机的 /root/.ssh/authorized_keys文件里,先要在B机上创建好 /root/.ssh 这个目录,用scp复制。 [root@A ~ ]# scp /root/.ssh/id_rsa.pub root@ 192.168.1.181 :/root/.ssh/authorized_keys root@ 192.168 . 1.181 '

烂泥:gpg加解密软件学习

孤街醉人 提交于 2020-03-01 02:45:56
本文由 ilanniweb 提供友情赞助,首发于 烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb。 为什么要学习gpg呢?因为要在Linux下把一个邮箱的密码加密,不让其他人看到该邮箱真正的密码。 为了不让其他人看到真正的邮箱密码,我们需要对其进行加密。 加密的方式是先把密码先写到一个文件A中,然后使用相关的加密软件对该文件A进行加密生成新的文件B。此时再删除文件A。 其他程序调用邮箱密码时,只调用加密后的文件B,同时对文件B进行解密。 加密我们使用的是gpg这个工具,下面我们来介绍下gpgp。 一、gpg是什么 GPG是GNU Privacy Guard或GnuPG的简称,它是一种用于加密、数字签章及产生非对称匙对的加密软件。 GPG使用非对称加密算法,安全程度比较高。所谓非对称加密算法,就是每一个用户都拥有一对密钥:公钥和私钥。其中,私钥由用户保存,公钥则由用户尽可能地分发给其他人,以便其他人与用户进行通信。 二、安装gpg gpg的安装非常简单,在此我们以ubuntu 14.04 server为例。如下: sudo apt-get -y install gnupg gnupg-agent rng-tools centos6默认已经安装gpg,还需要我们在安装rng-tools就可以正常使用。如下: yum -y install rng-tools

Https请求的加密过程

让人想犯罪 __ 提交于 2020-02-29 15:30:57
http与Https的区别 https是在https的基础上做了一层数据加密处理,在一些安全要求比较高的场景中,数据在服务器和客户端之间传输的过程中,是要求对数据进行加密处理后再传输的,以保证被传输数据的安全性。 加密方式 对称加密 对称加密的话,加密和解密过程中使用到的秘钥都是同一个,因此,对称加密要保证安全的话,秘钥就必须做好保密,只能让使用的人知道,不能对外公开。 对称加密存在一个问题就是,秘钥的传输不能够保证安全。因为在通信过程中,秘钥必须是需要有一个从服务器到客户端的一个传输过程,一但在秘钥传输过程中这个秘钥被黑客截获,那么接下来的通信过程就可能存在安全隐患了。 非对称加密 非对称加密加密使用的秘钥和解密使用的秘钥是不相同的,一把是作为公开的公钥,另外一把是作为谁都不能给的私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。 非对称加密的私钥放在服务器中,不会在网络中传播,这样就能保证这个私钥的私密性。但是对应的公钥,是可以在互联网上随意传播的,只要网站把这个私钥传给客户端,两端就可以相互进行通信了。 存在的问题 如果只用一对公钥和私钥的话, 那么服务器网站发送回复消息的时候,这个时候的数据加密就会有问题,如果用自己的私钥加密的话,因为对应的公钥谁都可以拿到,所以这样肯定是行不通的,如果用对应的公钥加密的话,加密后的数据只有服务器本身能解密出来

OpenSSL RSA加解密 (.Net公钥加密/ Linux端私钥解密)

与世无争的帅哥 提交于 2020-02-29 09:14:46
要求在.Net端生成公钥私钥对。 然后在.Net端使用RSA公钥加密;在 Linux 端使用RSA私钥解密。 最初的尝试是:.Net端使用RSACryptoServiceProvider; linux 端使用OpenSSL 搞了整整5个小时,有木有啊,有木有啊! .Net的RSA和OpenSSL对不上,有木有啊,有木有啊! 人都搞晕了就是对不上。最后解决方式换成了,.Net端使用 OpenSSL .NET . .Net端代码 string publicKeyFile = context.Server.MapPath( "~/App_Data/public.pem"); using( RSA rsa = RSA.FromPublicKey(BIO.File(publicKeyFile, "r")) ) { buffer = rsa.PublicEncrypt( buffer, RSA.Padding.OAEP); encryptedKey = Convert.ToBase64String(buffer); } Linux端代码 BIO *b64, *bmem; // Base64解码 unsigned char *buffer = (unsigned char *)malloc(length); memset(buffer, 0, length); b64 = BIO_new(BIO

《现代密码学》习题

被刻印的时光 ゝ 提交于 2020-02-29 04:54:56
第一章 1.1949年,Shannon发表题为《保密系统的通信理论》的文章,为密码系统建立了理论基础,从此密码学成为一门科学。 2.一个加密系统至少由明文、密文、加密算法、解密算法和密钥组成,其安全性是用密钥决定的。 3.计算和估计出破译密码系统的计算量下限,利用已有的最好方法破译他的所需要的代价超出了破译者的破译能力(时间、空间、资金等资源),那么该密码系统的安全性是 计算安全。 4.根据密码分析者所掌握的分析资料的不同,密码分析一般可以分为4类:唯密文攻击、已知明文攻击、选择明文攻击,选择密文攻击,其中破译难度最大的是选择密文攻击。 5.1976年,Diffie和Helman在《密码学的新方向》中提出立了公开密钥密码的思想,开创了现代密码学的新领域。 6.密码学发展过程中,两个质的飞跃分别指1949年香农发表的保密系统的通信理论和公钥密码思想。 7.密码学是研究信息寄信息系统安全的科学,密码学又分为密码编码学和密码分析学。 8.一个保密系统一般是明文、密文、密钥、加密算法和解密算法五部分组成的。 9.密码体制是指实现加密和解密功能的密码方案,从使用密钥策略上,可分为对称和非对称。 10.对称密码体制又称为秘密密钥体制,包括分组密密码和序列密码。 第二章 1.字母频率分析法对单表带换密码算法最有效。 2.希尔密码算法抵御频率分析攻击能力最强,而对已知明文攻击最弱。 3

rsa加密解密, 非对称加密

≯℡__Kan透↙ 提交于 2020-02-28 14:45:58
2016年3月17日 17:21:08 星期四 现在越来越懒了.... 参考: http://www.xuebuyuan.com/1399981.html 左边是加密流程, 右边是解密流程 呃...有一个错别字, "摘" ------2018-3-21 11:17:54 星期三 参考 : 所谓非对称加密,其实很简单,就是加密和解密需要两把钥匙:一把公钥和一把私钥 公钥是公开的,任何人都可以获取。 私钥是保密的,只有拥有者才能使用。 他人使用你的公钥加密信息,然后发送给你,你用私钥解密,取出信息。 反过来,你也可以用私钥加密信息,别人用你的公钥解开,从而证明这个信息确实是你发出的,且未被篡改,这叫做数字签名 参考 : 1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法 来源: https://www.cnblogs.com/iLoveMyD/p/5288255.html