非对称加密

对称加密和非对称加密

自闭症网瘾萝莉.ら 提交于 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"

Https请求的加密过程

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

【转】rsa加解密的内容超长的问题解决

寵の児 提交于 2020-02-29 12:06:11
一. 现象: 有一段老代码用来加密的,但是在使用key A的时候,抛出了异常:javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes。老代码已经做了分段的加密,应该是已经考虑了加密长度的问题才对。换了另一个线上代码中的key B,正常加密没有异常。 二. 解决: 老代码如下: private static String encryptByPublicKey(String plainText, String publicKey) throws Exception { int MAX_ENCRYPT_BLOCK = 128; byte[] data = plainText.getBytes("utf-8"); Key e = RSASignature.getPublicKey(publicKey); // 对数据加密 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, e); int inputLen = data.length; ByteArrayOutputStream out = new ByteArrayOutputStream(); int offSet = 0; byte[]

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

TLS加密传输、CA、证书

痞子三分冷 提交于 2020-02-24 20:13:12
文章目录 密码学背景 对称加密 非对称加密 证书 概念 证书标准 密码学背景 对称加密 非对称加密 证书 概念 证书是由CA签发的对用户公钥的凭证。 证书标准 X.509 数字证书标准 来源: CSDN 作者: 写到天黑的小白 链接: https://blog.csdn.net/lxb122435677/article/details/104478359

细说sql 加密

≡放荡痞女 提交于 2020-02-21 08:48:12
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程。在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在的机房,而是作为当数据库被破解或是备份被窃取后的最后一道防线。通过加密,使得未被授权的人在没有密钥或密码的情况下所窃取的数据变得毫无意义。这种做法不仅仅是为了你的数据安全,有时甚至是法律所要求的(像国内某知名IT网站泄漏密码这种事在中国可以道歉后不负任何责任了事,在米国妥妥的要破产清算)。 SQL Server中的加密简介 在SQL Server2000和以前的版本,是不支持加密的。所有的加密操作都需要在程序中完成。这导致一个问题,数据库中加密的数据仅仅是对某一特定程序有意义,而另外的程序如果没有对应的解密算法,则数据变得毫无意义。 到了SQL Server2005,引入了列级加密。使得加密可以对特定列执行,这个过程涉及4对加密和解密的内置函数 SQL Server 2008时代,则引入的了透明数据加密(TDE),所谓的透明数据加密,就是加密在数据库中进行,但从程序的角度来看就好像没有加密一样,和列级加密不同的是,TDE加密的级别是整个数据库。使用TDE加密的数据库文件或备份在另一个没有证书的实例上是不能附加或恢复的。 加密的一些基础知识

HTTPS简介(二):非对称加密RSA

别等时光非礼了梦想. 提交于 2020-02-10 13:02:47
我们如何决定密钥是什么? 如果只有发送方和接收方知道密钥,对称密钥密码术是很安全的。在凯撒密码中,密钥是一个偏移值,这个偏移值决定每个字母应该偏移多少。在我们的例子中,我们使用的偏移值是 3,但是也能是 4 或者 12。 不过这么设计会有个问题:在用信鸽传递信息之前,如果 Alice 和 Bob 之前从没见过,他们没有安全的方式创建一个密钥。如果他们将密钥包含在信息之中,Mallory 将拦截信息并且发现密钥。后果就是:无论 Alice 和 Bob 发送的信息是否加密,Mallory 都能读取或者改变拦截到的信息。 这是一个典型的中间人攻击例子。避免它的唯一方法是改变之前的密码系统。 那么有没有这种方式,Alice 和 Bob 之前从没见过,Alice 想要给 Bob 传递一条信息,一开始Alice 先写一封空的信给Bob ,Bob发一个密钥给Alice。这个密钥要一个特点只能用来加密,对自己加密的文件都没办法解密,只有Bob 才能够解开。也就是说在密钥在传输的过程中即使被Mallory 截获了信鸽,Mallory知道了这个密钥,拿到了这个密钥也只是用来加密,他即使接下里截获到了Alice 用大家都拿到的密钥加密信息发给 Bob的信件,他也没办法解开密文。 这是另外一套密码系统。 他跟之前的有不一样的地方,第一就是他需要两次通讯过程,第二就是给出去的密钥只能用来加密无法用来解密。

RSA 非对称加密原理

丶灬走出姿态 提交于 2020-02-07 10:41:05
RSA 加密原理 步骤 说明 描述 备注 1 找出质数 P 、Q - 2 计算公共模数 N = P * Q - 3 欧拉函数 φ(N) = (P-1)(Q-1) - 4 计算公钥E 1 < E < φ(N) E的取值必须是整数E 和 φ(N) 必须是互质数 5 计算私钥D E * D % φ(N) = 1 - 6 加密 C = M E mod N C:密文 M:明文 7 解密 M =C D mod N C:密文 M:明文 公钥=(E , N) 私钥=(D, N) 对外,我们只暴露公钥。 示例 1、找出质数 P 、Q P = 3 Q = 11 2、计算公共模数 N = P * Q = 3 * 11 = 33 N = 33 3、 欧拉函数 φ(N) = (P-1)(Q-1) = 2 * 10 = 20 φ(N) = 20 4、计算公钥E 1 < E < φ(N) 1 <E < 20 E 的取值范围 {3, 7, 9, 11, 13, 17, 19} E的取值必须是整数, E 和 φ(N) 必须是互质数 为了测试,我们取最小的值 E =3 3 和 φ(N) =20 互为质数,满足条件 5、计算私钥D E * D % φ(N) = 1 3 * D % 20 = 1 根据上面可计算出 D = 7 6、公钥加密 我们这里为了演示,就加密一个比较小的数字 M = 2 公式:C = ME mod

04 非对称加密

旧巷老猫 提交于 2020-02-06 12:41:01
非对称加密 1 简介 非对称加密算法 ,又称为 公开密钥加密算法 。它需要两个密钥,一个称为公开密钥 (public key),即公钥,另一个称为私有密钥 (private key),即私钥。因为加密和解密使用的是两个不同的密钥,所以这种算法称为非对称加密算法。 如果使用公钥对数据进行加密,只有用对应的私钥才能进行解密。 如果使用私钥对数据进行加密,只有用对应的公钥才能进行解密。 2 常见算法 2.1 RSA算法 RSA 加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA 是第一个能同时用于加密和数字签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被 ISO 推荐为公钥数据加密标准。 RSA 加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。 2.2 ECC算法 ECC 也是一种非对称加密算法,主要优势是在某些情况下,它比其他的方法使用更小的密钥,比如 RSA 加密算法,提供相当的或更高等级的安全级别。不过一个缺点是加密和解密操作的实现比其他机制时间长 (相比 RSA 算法,该算法对 CPU 消耗严重)。 来源: CSDN 作者: JasBin2008 链接: https://blog.csdn.net/JasBin2008/article/details