聊一下HTTP 与 HTTPS 的区别,以及HTTPS 的加密方式

作为前端开发,或多或少都听过 HTTP 和 HTTPS 的区别,甚至在写接口地址时早已习惯加个 "s",但你是否真正了解它们之间到底有什么不同?HTTPS 的安全到底"安全"在哪?今天我们就一起来聊聊!

一、HTTP 和 HTTPS,外表一样,灵魂不一样

从名字来看,HTTPS 就是在 HTTP 的基础上加了个 "S",这个 "S" 是 Secure(安全) 的意思,也就是------加密过的 HTTP。

HTTP 是什么?

HTTP(HyperText Transfer Protocol)是超文本传输协议,它定义了客户端(通常是浏览器)和服务端如何通信。它是 明文传输 的,意味着你发送的每一个请求、表单、密码,只要被人截获,就能直接看到内容。

这就像你在大马路上大喊 "我银行卡密码是 123456!" ------ 谁路过谁都知道。

HTTPS 呢?

HTTPS 在 HTTP 基础上增加了一层加密------通过 SSL/TLS 协议 对数据进行加密。简单理解,就是给数据包套上一层"保险箱",别人即使截获了,也打不开。

二、HTTP 和 HTTPS 的区别有哪些?

特性 HTTP HTTPS
是否加密 否,明文传输 是,基于 SSL/TLS 加密
默认端口 80 443
安全性 低,易被劫持、篡改 高,防劫持、防篡改、防监听
证书支持 不需要证书 需要 SSL 证书
性能消耗 相对低 稍高(但现在可忽略)

你可能会说,HTTPS 要多消耗一点性能啊,那我是不是可以只在登录、支付这些页面用 HTTPS?

这个做法在十年前可能合理,但现在几乎所有网站(包括博客、静态站)都默认全站 HTTPS,主要是因为:

  • 浏览器已经开始标记 HTTP 网站为"不安全";
  • Google 搜索权重也会优先考虑 HTTPS;
  • 性能开销已经很小了,尤其在 HTTP/2 推出之后反而更快。

三、HTTPS 的加密方式到底是什么?

很多人听到加密就头大,说什么对称加密、非对称加密一堆术语。其实不用太复杂,我们可以先理解"交换钥匙"的过程:

1. 对称加密:快,但密钥不能丢

对称加密就像两个人用同一把钥匙开门,比如 AES、DES。加密快,但问题是:密钥怎么传给对方?

如果我用快递寄给你密钥,一路上被人偷走,那就白加密了。

2. 非对称加密:安全,但效率低

这时就需要非对称加密,比如 RSA。有一把"公钥"和一把"私钥"。

  • 公钥人人可见,用它加密;
  • 私钥自己保存,用它解密。

比如你用我网站的公钥加密一段内容,只有我能解开。这样密钥就不用暴露在路上了,安全。

但非对称加密效率很低,尤其是对大文件。所以我们要 两者结合使用

3. 混合加密:TLS 的真面目

阶段1:握手阶段(用非对称加密)

  • 目的:安全地协商出一个对称加密的密钥
  • 过程:
    1. 客户端用服务器的公钥加密一个随机数
    2. 服务器用私钥解密得到这个随机数
    3. 双方基于这个随机数生成相同的对称密钥

阶段2:数据传输阶段(用对称加密)

  • 目的:高效地传输实际数据
  • 过程:所有网页内容、表单数据等都用刚才协商的对称密钥加密

形象的比喻

想象你要给朋友寄一个装满钱的箱子:

  1. 握手阶段:你们先用"挂号信"的方式(非对称加密)安全地交换箱子的密码
  2. 数据传输阶段:然后用这个密码锁住箱子(对称加密)快速寄送

具体的技术流程

arduino 复制代码
客户端 → 服务器: "我支持这些加密算法"
服务器 → 客户端: "我选择AES-256,这是我的证书和公钥"
客户端 → 服务器: "好的,我生成了一个随机数,用你的公钥加密发给你"
服务器 → 客户端: "收到,我们现在都有了相同的密钥"
双方: "开始用AES-256加密传输数据"

为什么这样设计?

  1. 安全性:非对称加密解决了密钥分发问题
  2. 效率:对称加密保证了数据传输速度
  3. 实用性:结合了两者的优点,避免了各自的缺点

这就是为什么HTTPS既安全又不会太慢的原因。它在建立连接时花一点时间用非对称加密"握手",然后在传输数据时用高效的对称加密。

四、那 HTTPS 就绝对安全吗?

不能说绝对,但比明文 HTTP 强太多太多。

HTTPS 可以防止:

  • 被中间人劫持(比如运营商注入广告);
  • 被监听内容(比如你密码、token 被抓包);
  • 被篡改数据(比如返回的 JSON 被改动);

但要注意几点:

  • 如果你网站证书没配好,浏览器照样报红;
  • 如果你把密码打印在控制台,再加密也没用;
  • 如果你的 JS 被 CDN 替换,HTTPS 也救不了你。

五、总结

  • HTTP 是明文,HTTPS 是加密的;
  • HTTPS 是通过 SSL/TLS 协议实现加密的,混合使用非对称加密和对称加密;
  • 建议所有网站都默认启用 HTTPS,不要等浏览器"红叉"才改。
相关推荐
打小就很皮...18 分钟前
HBuilder 发行Android(apk包)全流程指南
前端·javascript·微信小程序
集成显卡1 小时前
PlayWright | 初识微软出品的 WEB 应用自动化测试框架
前端·chrome·测试工具·microsoft·自动化·edge浏览器
前端小趴菜052 小时前
React - 组件通信
前端·react.js·前端框架
Amy_cx2 小时前
在表单输入框按回车页面刷新的问题
前端·elementui
dancing9993 小时前
cocos3.X的oops框架oops-plugin-excel-to-json改进兼容多表单导出功能
前端·javascript·typescript·游戏程序
后海 0_o3 小时前
2025前端微服务 - 无界 的实战应用
前端·微服务·架构
Scabbards_3 小时前
CPT304-2425-S2-Software Engineering II
前端
小满zs3 小时前
Zustand 第二章(状态处理)
前端·react.js
程序猿小D3 小时前
第16节 Node.js 文件系统
linux·服务器·前端·node.js·编辑器·vim
萌萌哒草头将军3 小时前
🚀🚀🚀Prisma 发布无 Rust 引擎预览版,安装和使用更轻量;支持任何 ORM 连接引擎;支持自动备份...
前端·javascript·vue.js