非对称加密算法

浅析HTTPS与SSL原理

孤街浪徒 提交于 2019-12-06 19:04:09
版权声明:本文由盛旷 原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/134 来源:腾云阁 https://www.qcloud.com/community HTTPS是指结合HTTP和SSL来实现网络浏览器和服务器之间的安全通信。HTTPS被融合到当今网络操作系统和网络浏览器中,他依赖于网络服务器是否支持HTTPS协议。本文重点是阐述HTTPS和SSL证书的原理,不涉及具体实现。在开始叙述原理之前,先明确几个网络安全方面的基础概念。 一.基础概念 1. 对称加密算法 一个对称加密算法由五个部分组成: 明文:原始消息或数据 加密算法 密钥 密文:使用密钥通过加密算法对明文计算后的结果 解密算法:使用密文和相同密钥通过解密算法产生原文 2. 非对称加密算法 与对称加密算法不同的是,非对称加密算法使用的加密密钥和解密密钥是不同的。 3. 公钥密码与RSA 公钥密码属于对称加密算法中的一种,公钥密码体系中有一个公钥和一个密钥,公钥是公开给所有人使用的,密钥只有自己知道,通常公钥根据一个密钥进行加密,根据另一个密钥进行解密。 RSA公钥密码算法是公钥密码算法中的一种,RSA中的加密和解密都可以使用公钥或者私钥,但是用公钥加密的密文只能使用私钥解密,用私钥加密的密文智能使用公钥解密。 二.SSL证书的原理

SSL 杂谈

蓝咒 提交于 2019-12-06 11:18:32
什么是 SSL SSL (Secure Sockets Layer) 是一种在应用层和传输层之间的协议,对传输层(TCP)到应用层(HTTP)的数据进行加密,主要是为了保证 Internet 上数据传输的安全性,确保数据在传输过程中不被截取或监听 SSL 在技术上位与应用层,但从开发者的角度来看,它是一个提供 TCP 服务的传输层协议 TLS(Transport Layer Security)是 SSL 的继任者,在很多场合还是用 SSL 来指代 SSL/TLS 基本大部分支持 SSL 加密数据的服务器,都是采用 OpenSSL 库来实现的 OpenSSL是一个强大的安全套接字层密码库,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,它还是一个多用途的、跨平台的密码工具 SSL 协议的安全机制 SSL 通过以下三种机制,实现了网络通信的安全性 1. 数据传输的机密性 通过对称/非对称加密算法,在通信双方之间建立加密通道,保证数据传输的机密性 2. 身份验证机制 使用数字签名来验证通信对端的身份 3. 消息完整性验证 基于 md5/sha 等 hash 算法来保证消息的完整性,避免网络中传输的数据被非法篡改 SSL 的工作原理 简单了解下网络通信加密的发展过程,假设 A 和 B 之间需要网络通信 远古 远古时期民风淳朴,路不拾遗、夜不闭户,A 要发数据给 B

Java中常见的几种加密算法

浪尽此生 提交于 2019-12-05 02:46:50
1. BASE64 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。 2. MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文件是否一致的。 3.SHA

我爱java系列--【加密算法的介绍】

巧了我就是萌 提交于 2019-12-05 01:15:33
1.加密算法 加密算法种类有: 1.1.可逆加密算法 解释: 加密后, 密文可以反向解密得到密码原文. 1.1.1. 对称加密 【 文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥 】 解释: 在对称加密算法中,数据发信方将明文和加密密钥一起经过特殊的加密算法处理后,使其变成复杂的加密密文发送出去,收信方收到密文后,若想解读出原文,则需要使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密,才能使其回复成可读明文。在对称加密算法中,使用的密钥只有一个,收发双方都使用这个密钥,这就需要解密方事先知道加密密钥。 优点: 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 缺点: 没有非对称加密安全. 用途: 一般用于保存用户手机号、身份证等敏感但能解密的信息。 常见的对称加密算法有 : AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS256 1.1.2. 非对称加密 【 两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密 】 解释: 同时生成两把密钥:私钥和公钥,私钥隐秘保存,公钥可以下发给信任客户端. 加密与解密: 私钥加密,持有私钥或公钥才可以解密 公钥加密,持有私钥才可解密 签名: 私钥签名, 持有公钥进行验证是否被篡改过. 优点: 非对称加密与对称加密相比,其安全性更好; 缺点:

加密算法

試著忘記壹切 提交于 2019-12-04 16:37:57
加密算法 对称加密算法(私钥算法) ①DES (Data Encryption Standard) DES(40 bit长度加密) DES(56 bit长度加密) 3DES (3x56=168加密长度) ②AES (Advanced Encryption Standard) AES 128 AES 192 AES 256 非对称加密算法(公钥算法) RSA HMAC(Hashed Message Authentication Code) MD5 (Message Digest 5) (128bit) SHA-1(160 bit) 来源: https://www.cnblogs.com/miaocongcong/p/11874705.html

Android常见的加密算法

杀马特。学长 韩版系。学妹 提交于 2019-12-04 04:19:25
   Android中常见的加密算法按可逆不可逆分为两大类吧。   1.不可逆的算法   主要为MD5和SHA-1算法。   相同点:都是使用目前比较广泛的散列(Hash)函数,就是把任意长度的输入,变换成固定长度的输出,该输出就是散列值。计算的时候所有的数据都参与了运算,其中任何一个数据变化了都会导致计算出来的Hash值完全不同。(理论上来讲产生的密文都有可能产生碰撞)   不同点:MD5输出是128位的,SHA-1输出是160位的,MD5比SHA1运行速度快,SHA1比MD5强度高。MD5一般用于文件的校验,SHA-1主要使用于数字签名标准。   MD5使用: 1 public static String digest(String content){ 2 StringBuilder builder = new StringBuilder(); 3 try { 4 MessageDigest msgDitest = MessageDigest.getInstance("MD5"); 5 msgDitest.update(content.getBytes()); 6 byte[] digests = msgDitest.digest(); 7 //将每个字节转为16进制 8 for (int i=0;i<digests.length;i++){ 9 // TODO: 2019

Android 加密算法归纳

匿名 (未验证) 提交于 2019-12-03 00:33:02
密钥:分为加密密钥和解密密钥。 明文:没有进行加密,能够直接代表原文含义的信息。 密文:经过加密处理处理之后,隐藏原文含义的信息。 加密:将明文转换成密文的实施过程。 解密:将密文转换成明文的实施过程。 密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。 为安全框架提供类和接口,如解析和管理证书、密钥生成、算法参数。 java.security java.security.acl java.security.cert java.security.interfaces java.security.spec 2.为加密操作提供类和接口,如加密操作包括加密,密钥生成和密钥协议以及消息认证码(MAC)生成。 支持加密包括对称,非对称,块和流密码。 javax.crypto javax.crypto.interfaces javax.crypto.spec 可参考谷歌开发者文档: https://developer.android.com/reference/packages Base64 Base64只是一种编码方式,将二进制数据转化为字符

密码体制(加密算法)

匿名 (未验证) 提交于 2019-12-03 00:19:01
密码体制分类方法有三种: 根据密码算法所用的密钥数量一般分为两类:非对称密码体制,对称密码体制 根据对明文信息的处理方式可将对称密码体制分为分组密码(DES、AES、IDEA、RC6)和序列密码(RC4、A5、SEAL) 根据是否能进行可逆的加密变换可以分为单项函数密码体制(MD4、MD5、SHA-1)和双向变换密码体制 对一个提供保密服务的密码系统,他的加密密钥和解密密钥相同,或者虽然不相同,但是其中一个的任意一个可以很容易的导出另外一个,那么这个系统采用的就是对称密钥体制 优点: - 加解密速度快 - 效率高 - 算法安全性高 缺点: - 密钥分发过程复杂,所花代价大 - 密钥管理量困难(实现n个用户两两保密通信,每个用户需要安全获取并保管(n-1)个密钥) - 保通信系统开放性差 - 存在数字签名的困难性(通信双方拥有相同的秘密信息,接收方可以伪造数字签名,发送方可以抵赖) DES、AES、IDEA、RC6 对一个提供保密服务的密码系统,他的加密算法和解密算法分别用不同的密钥实现,并且加密密钥不能推导出解密密钥,那么这个系统采用的就是非对称密钥体制。 每一个用户有一对密钥,用公钥加密,私钥解密 优点: - 密钥分配简单 - 密钥量少,容易管理 - 系统开放性好 - 可以实现数字签名 缺点: - 加密、解密运算复杂 - 处理速度较慢 - 同等安全强度下

几种常见的加密算法

匿名 (未验证) 提交于 2019-12-02 23:51:01
转载自: https://blog.csdn.net/zyhlwzy/article/details/77946086 由于计算机软件的非法复制,通信的泄密、数据安全受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息安全技术中,加密技术占有不可替代的位置,因此对信息加密技术和加密手段的研究与开发,受到各国计算机界的重视,发展日新月异。现在我们就几种常用的加密算法给大家比较一下。 DES加密算法 DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。这样,只有掌握了和发送方相同密钥的人才能解读由DES加密算法加密的密文数据。 DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。 DES算法是这样工作的:如Mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密

Base64、MD5、RSA和ASE加密算法总结及JAVA实现-Base64

匿名 (未验证) 提交于 2019-12-02 21:53:52
常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 Base64 BASE64并不能算为一种加密算法,而是一种编码方式,通常用于把二进制数据编码为可写的字符形式的数据。BASE64是一种可逆的编码方式。 它通常用作存储、传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用作电子邮件标准)中一种可打印字符表示二进制数据的常见编码方法! 首先将待编码的内容转换成8位二进制,每3个字符为一组; 如果编码前的长度是3n+1,编码后的内容最后面补上2个 ‘=’,如果编码前的长度是3n+2,编码后的内容最后面补上1个 ‘=’。 再将每一组的二进制内容拆分成6位的二进制,不足6位的后面补足0; 每个6进制的数字前面补足0,保证变成8位二进制; 将补足后的内容根据base64编码表转换成base64内容输出; /** * 编码类 */ public static class Encoder { private final byte [] newline; private final int linemax; private final boolean isURL; private final boolean doPadding; private Encoder ( boolean isURL, byte [] newline, int linemax,