非对称加密

密码学在加密算法上分类

点点圈 提交于 2020-05-05 15:13:42
单向加密算法 单向加密算法主要用于对信息完整性的验证 ,这种技术就是由散列函数提供的消息认证技术。 散列函数,也称做哈希函数、消息摘要函数、单向函数或杂凑函数。通过散列函数,可以为数据创建“数字指纹”(散列值)。散列值通常是一个字母和数字组成的字符串。 其消息认证流程如下: 在上述认证流程中,信息收发双方在通信前已经商定了具体的散列算法,并且该算法是公开的。如果消息在传递过程中被篡改,则该消息不能与已获得的数字指纹相匹配。 散列函数具有以下的特征: 消息的长度不受限制 对于给定的消息,其散列值的计算是很容易的。 如果两个散列值不相同,则这两个散列值的原始输入消息也不相同,这个特性使得散列函数具有确定性的结果。 散列函数的运算过程是不可逆的,这个特性称为函数的单向性。这也是单向函数命名的由来。 对于一个已知的消息及散列值,要找到另一个消息使其获得相同的散列值是可不能的。这个特性称为抗弱碰撞性。这被用来防止伪造。 任意两个不同消息的散列值一定不同。这个特性称为抗强碰撞性。 散列函数广泛用于信息完整性的验证,是数据签名的核心技术,散列函数的常用算法有MD----消息摘要算法、SHA-----安全散列算法及MAC-----消息认证码算法。 对称密码体制 对称密码体制的保密模型如下图所示。对称密码体制要求加密和解密使用同一个密钥,解密是加密的逆运算,由于通信双方共享同一个密钥

13种加密与解密算法【一】

二次信任 提交于 2020-04-04 12:57:47
这15种加密解密算法分别是:散列哈希[MD5、SHA1、CRC32],对称[DES,3DES(TDEA、Triple DES),AES、,Blowfish,RC4、RC5,IDEA],Base64、Rabbit、Escape。 【三种分类】 1、对称加密:密钥只有一个,解密、解密都是这个密码,加解密速度快,典型的对称加密有DES、AES、RC4等 2、非对称加密:密钥成对出现,分别为公钥和私钥,从公钥无法推知私钥,反之,从私钥也无法推知公钥,加密和解密使用不同的密钥,公钥加密需要私钥解密,反之,私钥加密需要公钥解密。非对称加密速度较慢,典型的非对称算法有:RSA,DSA,DSS. 3、Hash算法,这是一种不可逆的算法,它常用于验证数据的完整性。 【1、MD5加密解密】 md5是不可逆的,md5没有解密的方法,最好的反驳就是:数据源是无穷尽的,而 MD5密文是有限的。这里的加密解密是对md5算法先加密后解密,而不是对md5解密。 md5加密原理 MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 // MD5加密,32位 public static String MD5(String str) { MessageDigest md5 = null;

非对称加密RSA算法

旧街凉风 提交于 2020-03-28 02:38:26
密码与加密 传统密码: 加密算法是秘密的现代密码系统:加密算法是公开的;秘钥是秘密的(秘钥是用来加密的) 对称加密:加密和解密使用一个秘钥 非对称加密:使用两个秘钥,一个用来加密,一个用来解密 加密的RSA是用来进行信息传输用,存数据库的密码用的hash映射,md5或者sha 非对称加密 使用两个秘钥,公钥和私钥,公钥加密私钥解密,或者私钥加密公钥解密。例如RSA加密算法,应用:https协议,Linux远程登录不用密码。 公钥:用来加密,是公开的 私钥:用来解密,是私有的 加密过程测试: 1.随机选取两个质数p和q2.计算n=pq3.选取一个与φ(n)互质的小奇数e, φ(n)=(p-1)(q-1)4.对模φ(n), 计算e的乘法逆元d,即满足(e*d) % φ(n) = 15.公钥(e, n) 私钥(d, n)6.加密过程:c=(m^e) % n7.解密过程:m=(c^d) % n p = 53 q = 59 n = p*q fai_n = (p-1)*(q-1) # 选个小奇数 e 要满足(e*d) % fai_n = 1 e = 3 # 这个d一定是唯一的,证明略,满足(e*d) % fai_n = 1 d = 2011 m = 87 print('信息:', m) print('---------公钥加密,私钥解密-------') c = (m**e) % n

对称加密DES和非对称加密RSA的实现

被刻印的时光 ゝ 提交于 2020-03-28 02:24:03
Shared strKey As String = "12345678" Shared strIV As String = "12345678" Private Shared Key() As Byte = Encoding.UTF8.GetBytes(strKey.Substring(0, 8)) Private Shared IV() As Byte = Encoding.UTF8.GetBytes(strIV.Substring(0, 8)) ‘Key = New Byte() {11, 12, 13, 14, 15, 16, 17, 18} ‘IV = New Byte() {11, 12, 13, 14, 15, 16, 17, 18} Public Shared Function Encrypt(ByVal strText) As String Try Dim inputByteArray() As Byte = Encoding.UTF8.GetBytes(strText) Dim des As DESCryptoServiceProvider = New DESCryptoServiceProvider Dim ms As New MemoryStream Dim cs As New CryptoStream(ms, des.CreateEncryptor(Key,

Https原理及流程

百般思念 提交于 2020-03-20 11:42:32
3 月,跳不动了?>>> 我们知道,HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险。为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输过程中拦截到数据也无法破译,这就保证了网络通信的安全。 密码学基础 在正式讲解HTTPS协议之前,我们首先要知道一些密码学的知识。 明文 : 明文指的是未被加密过的原始数据。 密文 :明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。 密钥 :密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。 对称加密 :对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。 其加密过程如下:明文 + 加密算法 + 私钥 => 密文 解密过程如下:密文 + 解密算法 + 私钥 => 明文 对称加密中用到的密钥叫做私钥,私钥表示个人私有的密钥,即该密钥不能被泄露。

看完这篇 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

关于非对称加密的一点解说

隐身守侯 提交于 2020-03-09 00:59:14
非对称加密定义: 非对称加密算法又称 现代加密算法 1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。 对称加密定义 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文( 原始数据 )和加密 密钥 (mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的 密钥 及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的 密钥 只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。 从以上的定义我们不难看出: 对称加密和非对称加密的一个关键区别:对称加密,只有一个秘钥,发送方和接收方都使用这个秘钥进行加密和解密;而非对称加密,是发送方A:拥有 公开密钥(publickey) 和 私有密(privatekey),即公钥,私钥,接收方B:也有自己的公钥,私钥; 公开密钥和私有密钥是 一对 用 公开密钥 对数据进行 加密 ,只有用 对应的私有密钥 才能 解密 用 私有密钥 对数据进行 加密 ,只有用 对应的公开密钥 才能 解密 大致的过程就是这样的,即: 1.A要向B发送信息

RSA非对称加密方式

落花浮王杯 提交于 2020-03-04 19:34:41
记录一下所学到的东西,不一定适合各种情况,因为架构的原因所以使用了jfinal的两个包,可以参考一下。 import java . security . KeyFactory ; import java . security . KeyPair ; import java . security . KeyPairGenerator ; import java . security . PrivateKey ; import java . security . PublicKey ; import java . security . interfaces . RSAPrivateKey ; import java . security . interfaces . RSAPublicKey ; import java . security . spec . PKCS8EncodedKeySpec ; import java . security . spec . X509EncodedKeySpec ; import javax . crypto . Cipher ; import org . apache . commons . codec . binary . Base64 ; import com . jfinal . kit . StrKit ; import com .

对称加密和非对称加密

佐手、 提交于 2020-03-04 17:29:05
(一)对称加密(Symmetric Cryptography) 对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key) 。对称加密有很多种算法,由于它 效率很高 ,所以被广泛使用在很多加密协议的核心当中。 优点 简单快捷,密钥较短,且破译困难。 缺点 如果用户一旦多的话,管理密钥也是一种困难。不方便直接沟通的两个用户之间怎么确定密钥也需要考虑,这其中就会有密钥泄露的风险,以及存在更换密钥的需求。 对称加密通常有 DES,IDEA,AES,3DES 加密算法。 (二)非对称加密(Asymmetric Cryptography) **非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。**私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。 缺点 加解密比对称加密耗时. 优点 比对称加密安全. 但是非对称加密也是存在漏洞,因为公钥是公开的,如果有 C 冒充 B 的身份利用 A 的公钥给 A 发消息,这样就乱套了,所以接下来就采用非对称加密+摘要算法+数字签名的机制来确保传输安全。 常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie

PKI详解

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