HTTPS协议的主要功能依赖于SSL,SSL全称为安全套接层(Secure Socket Layer)。
SSL的功能主要依赖于三类加密算法,散列函数,对称加密和非对称加密。
 

HASH算法

HASH算法也称为散列函数,包括MD5,SHA1和SHA256。

1,MD5

MD5加密算法,全称“Message-Digest Algorithm 5”,中文名为“消息摘要算法第五版”。它是一种单向散列函数,具有不可逆性,意味着无法通过其输出的哈希值推导出原始数据。MD5算法的核心思想是将输入数据进行不可逆的变换,使不同的输入数据产生不同的输出结果。
MD5算法的处理过程包括填充、初始值设定、循环运算和输出。它首先将输入数据分成若干个块,每个块长度为512位,并对每个块进行一系列复杂的运算。经过这些处理后,MD5算法会输出一个由四个32位分组组成的128位哈希值,这个哈希值由32个16进制字符组成,通常以字符串的形式呈现。
MD5算法具有多种特性。它具有良好的压缩性,无论输入数据的长度如何,输出的MD5值长度都是固定的。同时,从原数据计算出MD5值相对容易,但已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)却非常困难,这体现了其强抗碰撞性。
MD5算法在计算机安全领域有广泛应用,特别是在各种软件的密码认证和钥匙识别上。然而,尽管MD5算法本身具有一定的安全性,但随着技术的发展,针对MD5的破解方法也在不断更新。因此,在实际应用中,通常需要通过加强密码设置、重新加密生成的MD5密码等方法,进一步提高密码的安全性。
总的来说,MD5加密算法是一种强大而有效的加密工具,它以其独特的单向性和不可逆性,为数据的安全存储和传输提供了重要保障。

2,SHA1

SHA-1(Secure Hash Algorithm 1,安全散列算法1)是一种密码散列函数,由美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1算法通过将输入数据转换为固定长度的哈希值,来实现数据的完整性保护和数字签名验证。
SHA-1算法的基本原理是将输入数据分块处理,并对每个数据块进行一系列的位运算和逻辑运算,最终生成一个160位(20字节)的哈希值。这个哈希值具有以下特点:
  • 哈希值长度固定,不论输入数据的长度如何,SHA-1生成的哈希值始终为160位。
  • 对于不同的输入数据,SHA-1生成的哈希值几乎是唯一的,即使输入数据的一个比特发生变化,生成的哈希值也会有较大差异。
  • 无法从哈希值反推出原始数据,即使输入数据只有微小的变化,生成的哈希值也会有较大差异,因此SHA-1算法是一种不可逆的加密算法。
SHA-1算法在实际生活中有广泛的应用,例如:
  • 密码验证:服务器端存储用户密码加密后的内容,每次密码校验比较的是密文是否相同,确保服务器管理员也无法获取到用户使用的密码。
  • 文件的完整性比较:当下载一个文件时,服务器返回的信息中包括这个文件的SHA-1值,在本地下载完毕将其进行SHA-1加密,之后比较两个SHA-1值,如果一致则说明文件完整不存在丢包现象。
然而,需要注意的是,尽管SHA-1在过去被广泛使用,但近年来其安全性受到了挑战。由于SHA-1的某些潜在弱点,一些安全专家建议逐步淘汰SHA-1,转而使用更安全的哈希算法,如SHA-256或SHA-3。
总体来说,SHA-1加密算法以其独特的散列特性和广泛的应用场景,为数据完整性验证和密码学安全提供了重要的支持。然而,随着技术的发展和安全需求的提高,选择更安全的哈希算法是更为明智的选择。

3,SHA256

SHA-1(Secure Hash Algorithm 1,安全散列算法1)是一种密码散列函数,由美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1算法通过将输入数据转换为固定长度的哈希值,来实现数据的完整性保护和数字签名验证。
SHA-1算法的基本原理是将输入数据分块处理,并对每个数据块进行一系列的位运算和逻辑运算,最终生成一个160位(20字节)的哈希值。这个哈希值具有以下特点:
  • 哈希值长度固定,不论输入数据的长度如何,SHA-1生成的哈希值始终为160位。
  • 对于不同的输入数据,SHA-1生成的哈希值几乎是唯一的,即使输入数据的一个比特发生变化,生成的哈希值也会有较大差异。
  • 无法从哈希值反推出原始数据,即使输入数据只有微小的变化,生成的哈希值也会有较大差异,因此SHA-1算法是一种不可逆的加密算法。
SHA-1算法在实际生活中有广泛的应用,例如:
  • 密码验证:服务器端存储用户密码加密后的内容,每次密码校验比较的是密文是否相同,确保服务器管理员也无法获取到用户使用的密码。
  • 文件的完整性比较:当下载一个文件时,服务器返回的信息中包括这个文件的SHA-1值,在本地下载完毕将其进行SHA-1加密,之后比较两个SHA-1值,如果一致则说明文件完整不存在丢包现象。
然而,需要注意的是,尽管SHA-1在过去被广泛使用,但近年来其安全性受到了挑战。由于SHA-1的某些潜在弱点,一些安全专家建议逐步淘汰SHA-1,转而使用更安全的哈希算法,如SHA-256或SHA-3。
总体来说,SHA-1加密算法以其独特的散列特性和广泛的应用场景,为数据完整性验证和密码学安全提供了重要的支持。然而,随着技术的发展和安全需求的提高,选择更安全的哈希算法是更为明智的选择。

对称加密算法

1,DES

Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。需要注意的是,由于DES使用56位密钥,因此已经不够安全,不应被用于保护敏感信息。

2,3DES

Triple DES,是对DES的一个扩展版本,使用三个密钥对数据进行三次加密,因此其安全性相对较高。但与此同时,其加密和解密的速度也会相对较慢。

3,AES

Advanced Encryption Standard,即高级加密标准,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。AES提供了三种长度的密钥,分别是128位、192位和256位,相对而言,AES的安全性要高于DES和3DES。

4,RC4

Rivest Cipher 4,是RSA数据安全公司开发的流加密算法,它的密钥长度是可变的,范围在1到256字节(8到2048位)之间。RC4算法的特点是加密速度快,因此在一些需要高效加密的场景中得到了广泛应用。
 
对称加密算法的主要特点是加密和解密使用相同的密钥,因此其加密和解密的速度通常较快。但与此同时,由于双方都需要持有相同的密钥,因此在密钥的分发和管理上存在一定的安全隐患。如果密钥被泄露,那么加密的数据就可能被破解。因此,在使用对称加密算法时,需要特别注意密钥的安全保护。

非对称加密算法

1,RSA

Rivest-Shamir-Adleman,这是最早也是最广泛使用的非对称加密算法之一。RSA算法基于大素数分解的困难性问题,可以用于数据加密和数字签名。RSA算法的特点是使用一对密钥,包括公钥和私钥。公钥用于加密数据,私钥用于解密数据。这种算法易于理解和操作,因此在各种应用中得到了广泛的使用。

2,DSA

Digital Signature Algorithm,这是一种专门用于数字签名的非对称加密算法。它主要用于验证数据的完整性和认证身份。DSA算法基于离散对数问题,可以确保数据的完整性和身份的真实性。

3,ECC

Elliptic Curve Cryptography,这是一种基于椭圆曲线数学问题的非对称加密算法。与传统的RSA和DSA相比,ECC在提供相同安全性的情况下需要更短的密钥长度,从而节省了计算资源。这使得ECC特别适合于资源受限的环境,如移动设备等。
 
总结起来就是,SSL其利用非对称加密实现身份认证和密钥协商,利用对称加密实现实现对数据的加密,利用散列函数来验证信息的完整性。
 
那么,针对SSL免费证书的不足和痛点,我开发并开源了一个平台:华迅FreeCert平台,支持免费的SSL证书,通配符证书的申请和托管,配合自动部署工具可以实现证书的自动化更新和部署,真正做到一次申请终身自动更新和自动部署,欢迎感兴趣的同学试用!
 

详解SSL证书系列(10)SSL的加密算法的更多相关文章

  1. java ssl https 连接详解 生成证书 tomcat keystone

    java ssl https 连接详解 生成证书 我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over ...

  2. SSL/TLS协议详解(中)——证书颁发机构

    本文转载自SSL/TLS协议详解(中)--证书颁发机构 导语 上一篇中,我们讨论了关于Diffie Hellman算法的SSL/TLS密钥交换.我们最终认为需要第三方来验证服务器的真实性,并提出了证书 ...

  3. 【转】DBMS_STATS.GATHER_TABLE_STATS详解 2012-04-22 09:20:10

    [转]DBMS_STATS.GATHER_TABLE_STATS详解 2012-04-22 09:20:10 分类: Linux 由于Oracle的优化器是CBO,所以对象的统计数据对执行计划的生成至 ...

  4. 免费SSL证书PK付费SSL证书 花落谁家

    3月17日和18日,Google Chrome 57.0.2987.110与Mozilla Firefox 52.0.1分别上线,而这两款浏览器都出现了一个共同点:打压HTTP协议.在Firefox ...

  5. HTTP和HTTPS有什么区别? 什么是SSL证书?使用ssl证书优势?

    什么是SSL? SSL是指安全套接层协议(以及传输层协议TLS),位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持,是目前使用最广泛的安全协议.它为互联网或内部网络连接,进行操作的两台 ...

  6. QT https post请求(QNetworkRequest要设置SSL证书,而SSL证书认证有三种,实测成功)

    以VS开发为例.因为https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在使用之前必须先做一些准备工作: 需要安装OpenSSL库: 1.首先打开http://slproweb.com ...

  7. QT https post请求(QNetworkRequest要设置SSL证书,而SSL证书认证有三种)

    因为https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在使用之前必须先做一些准备工作: 需要安装OpenSSL库: 1.首先打开http://slproweb.com/product ...

  8. 免费获取SSL证书/一键安装SSL证书/https加密

    因为我用的是恒创的香港服务器 虽然价格相较于大促的阿里云贵一些,但是有一个有点不用备案... 安装步骤: 1.登录云主机控制面板, 在 其他管理 中找到并进入 SSL证书 设置. 注意:如拥有多个域名 ...

  9. java ssl https 连接详解 生成证书

    我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全 ...

  10. 详解HTTPS、TLS、SSL

    HTTPS.TLS.SSL HTTP也称作HTTP over TLS.TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3.下 ...

随机推荐

  1. pycharm中如何改变主题

    这边分享一个我自己在用的主题,蛮简约的,关键字高亮显示.再也不用全都是一样的颜色了.网盘地址在最后哈 好了话不多说,教大家如何把主题设置到pycharm中 图1:首先把主题jar包下载下来,然后打开p ...

  2. ABP开发需要用到的命令

    0.命令行在哪里执行? 在Visual Studio的"解决方案资源管理器"的解决方案或者项目上点鼠标右键,选择"在终端中打开". 1.安装abp的命令行 官网 ...

  3. 机器学习策略篇:详解满足和优化指标(Satisficing and optimizing metrics)

    满足和优化指标 要把顾及到的所有事情组合成单实数评估指标有时并不容易,在那些情况里,发现有时候设立满足和优化指标是很重要的,让我告诉是什么意思吧. 假设已经决定很看重猫分类器的分类准确度,这可以是\( ...

  4. 照片也能说话了?嘴型表情全同步,AI数字人时代要来了

    SadTalker是一款先进的人工智能模型,它通过从音频中学习生成3D运动系数,并使用全新的三维面部渲染器来生成头部运动,只需传入一张照片和一段音频,就能生成高质量的AI数字人视频 工作原理 1.显式 ...

  5. Sagas论文原文读后总结

    一.引子 分布式事务组件seata最近社区很活跃,刚好公司有对接seata的计划.刚好借此机会,彻底了解下seata的价值.其中有一个比较特殊的模式叫SAGA模式,听起来就很懵逼,按照官网的介绍起源于 ...

  6. Linux系统设置shell开机自启

        自己写一个shell脚本 chmod -x file.sh sudo cp file.sh /etc/profile.d/ 将写好的脚本(.sh文件)放到目录 /etc/profile.d/ ...

  7. 为aws中国配置docker镜像加速

    在AWS中国,docker镜像基本无法拉取,更换国内镜像是必须的. 修改docker配置文件 sudo vi /etc/sysconfig/docker 找到OPTIONS参数,在后面加上" ...

  8. gcc生成静态链接库与动态链接库步骤,并链接生成可执行文件的简单示例

    编写 mylib.h void test(); 编写 mylib.c #include<stdio.h> void test(){ printf("hello world&quo ...

  9. python高级技术(进程二)

    一 进程对象及其他方法 '''一台计算机上面运行着很多进程,那么计算机是如何区分并管理这些进程服务端的呢?计算机会给每一个运行的进程分配一个PID号如何查看 windows电脑 进入cmd输入task ...

  10. .Net依赖注入神器Scrutor(下)

    前言 上一篇文章我们讲到了Scrutor第一个核心功能Scanning,本文讲解的是Scrutor第二个核心的功能Decoration 装饰器模式在依赖注入中的使用. 装饰器模式允许您向现有服务类中添 ...