前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何保证数据的安全?对称和非对称加密,身份认证,摘要算法,数字证书等傻傻分不清?波哥图解带你彻底掌握

如何保证数据的安全?对称和非对称加密,身份认证,摘要算法,数字证书等傻傻分不清?波哥图解带你彻底掌握

作者头像
用户4919348
发布于 2023-03-08 13:45:35
发布于 2023-03-08 13:45:35
1.4K00
代码可运行
举报
文章被收录于专栏:波波烤鸭波波烤鸭
运行总次数:0
代码可运行

支付安全

1.基础概念

明文:加密前的消息叫“明文”(plain text) 密文:加密后的文本叫“密文”(cipher text) 密钥:只有掌握特殊“钥匙”的人,才能对加密的文本进行解密,这里的“钥匙”就叫做“密钥”(key)

“密钥”就是一个字符串,度量单位是“位”(bit),比如,密钥长度是128,就是16字节的二 进制串

加密:实现机密性最常用的手段是“加密”(encrypt)

按照密钥的使用方式,加密可以分为两大类:对称加密非对称加密

解密:使用密钥还原明文的过程叫“解密”(decrypt)

加密算法:加密解密的操作过程就是“加密算法”

所有的加密算法都是公开的,而算法使用的“密钥”则必须保密

2.对称和非对称加密

对称加密:

  • 特点:只使用一个密钥,密钥必须保密,常用的有AES算法
  • 优点:运算速度快
  • 缺点:秘钥需要信息交换的双方共享,一旦被窃取,消息会被破解,无法做到安全的密钥交换

非对称加密:

  • 特点:使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,常用的有RSA
  • 优点:黑客获取公钥无法破解密文,解决了密钥交换的问题
  • 缺点:运算速度非常慢

混合加密:

  • 实际场景中把对称加密和非对称加密结合起来使用。

3.身份认证

公钥加密,私钥解密的作用是加密信息

私钥加密,公钥解密的作用是身份认证

4.摘要算法

  摘要算法就是我们常说的散列函数、哈希函数(Hash Function),它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”。

作用:   保证信息的完整性 特性

  • 不可逆:只有算法,没有秘钥,只能加密,不能解密
  • 难题友好性:想要破解,只能暴力枚举
  • 发散性:只要对原文进行一点点改动,摘要就会发生剧烈变化
  • 抗碰撞性:原文不同,计算后的摘要也要不同

常见摘要算法: MD5、SHA1、SHA2(SHA224、SHA256、SHA384)

举个简单例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public static void main(String[] args) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
            // 反复调用update输入数据:
            messageDigest.update("aa".getBytes(StandardCharsets.UTF_8));
            byte[] result = messageDigest.digest();
            System.out.println(new BigInteger(1, result).toString(16));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }

摘要算法的应用

  1. 下载软件校验
  2. 彩虹表问题

数据安全性:

  当然上面的操作也有问题的。如果黑客获取到了明文,然后修改内容后重新生成了摘要。替换了原来的摘要。然后把信息传递到了李四处,李四根据hash得到的摘要和传递的摘要比较发现是一样的。但是其实数据是已经修改过的了。这也就产生了数据安全问题。针对这个问题我们就需要通过数字签名来解决这个问题了。

数字签名

  针对上面的问题,我们可以对生成的摘要通过私钥加密处理。然后拼接在传递信息中。然后在服务器中根据公钥解密得到的摘要和正常的明文hash后的摘要信息比较是否相同,如果相同就认为是正确的。

  上面的处理中。细心的小伙伴会发现其实公钥是很容易获取的,黑客伪造了公钥,然后你又从伪造网站获取到了公钥。这时就有问题了。

数字证书

  数字证书解决“公钥的信任”问题,可以防止黑客伪造公钥。不能直接分发公钥,公钥的分发必须使用数字证书,数字证书由CA颁发.

CA:证书认证机构

服务器向CA申请数字证书:需要提交相关的信息给CA机构。然后CA机构通过如下操作生成数字证书返回给你申请者

在这个数字证书中包含的有申请者的公钥信息。然后申请者在传输信息时就会携带改数字证书。

完整的处理流程:

数字证书案例-----https协议

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SVN常用命令
SVN(Subversion)是一个自由、开源的项目源代码版本控制工具。目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件。
阳光岛主
2019/02/19
2.9K0
svn常用命令
de >svn checkout path(path是服务器 上的目录)例如:svn checkout svn://192.168.1.1/pro/domain
程序员小饭
2020/09/07
8150
SVN 常用命令
最好的办法,不知道命令,用个svn的插件,图形界面处理一次,然后记住console里面的命令就行了。 设置HTTP代理 个人使用的方法是直接修改配置文件。Mac配置文件在 用户目录下的.subversion中,执行以下命令: vi ~/.subversion/servers 添加如下配置: http-proxy-host =proxy.xxx.com http-proxy-port =8080 忽略文件,不加入版本 svn propedit svn:ignore . 说明,第一步先要cd到要忽略的文件的父目
子勰
2018/05/22
1.1K0
详解Linux命令行下常用svn命令
1、Linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、Linux命令行下往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前目录下所有的php文件) 3、Linux命令行下将改动的文件提交到版本库 svn commit -m “Log
李海彬
2018/03/23
6.9K0
linux的svn命令(网络命令的使用实验总结及体会)
查看历史修改信息,展示每个版本附加在版本上的作者和日期信息和所有路径修改
全栈程序员站长
2022/07/27
3.1K0
SVN钩子的一些简单说明
最近由于在看、SvnServer同步生产环境代码相关,特意了解了一下SVN的钩子。 1、SVN的hooks start-commit 提交前触发事务 pre-commit 提交完成前触发事务 post-commit 提交完成时触发事务 pre-revprop-change 版本属性修改前触发事务 post-revprop-change 版本属性修改后触发事务 通过上面这些名称编写的脚本就就可以实现多种功能了,相当强大。 SVN命令详解【转】 1、将文件checkout到本地目录 svn checkout
小柒2012
2018/04/13
9630
SVN服务的部署及使用
建立版本库(也可以理解为是一个项目,这个目录不能用mkdir来创建,因为svn有自己运行方式,会创立属于svn自己很多的文件)
仙人技术
2020/04/29
2.5K0
Ubuntu下SVN安装和配置
Ubuntu下SVN安装和配置 一、SVN安装 1.安装包 1.$ sudo apt-get install subversion 2.创建项目目录 $ sudo mkdir /home/xiaozhe/svn $ cd /home/xiaozhe/svn/ $ sudo mkdir mypro 3.创建svn文件仓库 $ sudo svnadmin create /home/xiaozhe/svn/mypro 4.导入项目到svn文件仓库 (可有可无) $ sudo svn imp
用户1212940
2018/01/23
2.9K0
python学习-SVN常用命令
SVN命令参考:http://riaoo.com/subpages/svn_cmd_reference.html
py3study
2020/01/08
1.9K0
Git常用命令使用大全
目前开发的新项目使用的版本控制工具基本用的都是Git,老项目用的还是Svn,网上Git资源也很多,多而杂。我整理了一份关于Git的学习资料,希望能帮助到正在学习Git的同学。
哲洛不闹
2018/12/05
6830
Git常用命令使用大全
掌握Linux:常用命令大全
导言: Linux是一种广泛使用的操作系统,它在服务器领域和嵌入式系统中都非常流行。了解和掌握Linux的常用命令对于系统管理员、开发人员和任何使用Linux的人都是至关重要的。本文将深入介绍一些常用的Linux命令,帮助您更好地利用这个强大的操作系统。
海拥
2023/10/04
1.2K0
从 SVN 到 Git 开发实用命令总结
作者:ronhu,腾讯 IEG 客户端开发工程师 本文从 Git 与 SVN 的对比入手,介绍如何通过 Git-SVN 开始使用 Git,并总结平时工作高频率使用到的 Git 常用命令。 一、Git vs SVN Git 和 SVN 孰优孰好,每个人有不同的体验。 Git 是分布式的,SVN 是集中式的 这是 Git 和 SVN 最大的区别。若能掌握这个概念,两者区别基本搞懂大半。因为 Git 是分布式的,所以 Git 支持离线工作,在本地可以进行很多操作,包括接下来将要重磅推出的分支功能。而 SVN 必须
腾讯技术工程官方号
2022/05/06
1K0
从 SVN 到 Git 开发实用命令总结
linux目录结构和常用命令
一、Linux目录结构 你想知道为什么某些程序位于/bin下,或者/sbin,或者/usr/bin,或/usr/sbin目录下吗?例如,less命令位于/usr/bin目录下。为什么没在/bin中,或/sbin,或/usr/sbin目录中?所有这些目录之间有什么不同? 在这篇文章中,让我们回顾一下Linux的文件系统结构,并理解各上层目录的含义。 蓝色:表示目录 青色:表示链接 黑色:表示文件 1、/- 根每一个文件和目录从根目录开始。只有root用户具有该目录下的写权限。请注意,/root是ro
Albert陈凯
2018/04/04
1.5K0
linux目录结构和常用命令
svn服务器配置与使用
(b)若安装需要卸载 sudo apt-get remove --purge subversion
全栈程序员站长
2022/09/06
1.1K0
svn服务器配置与使用
SVN
SVN是Subversion的简称,是一个自由开源的版本控制系统。 Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节 早期版本控制使用的是CVS,后来SVN替代了CVS,随着android兴起,出现Git版本控制工具
暴躁的程序猿
2022/03/24
1.4K0
SVN
如何在Mac上轻松使用SVN
大家都知道,在Mac或Linux环境下使用git比较方便,但有时候根剧项目要求又不得不使用SVN,在windows系统上面有我们最为熟悉的小乌龟(TortoiseSVN,下载链接:https://tortoisesvn.net/downloads.zh.html)在mac系统上面则很少svn的工具,本文就带大家对比Git,介绍如何在Mac上轻松使用命令行进行操作SVN,同时提升开发人员的格调。
码农编程进阶笔记
2022/08/18
5.2K0
如何在Mac上轻松使用SVN
SVN常用命令之checkout
官方解释,请参考:http://www.subversion.org.cn/svnbook/nightly/svn.ref.svn.c.checkout.html
全栈程序员站长
2022/07/07
4.8K0
Git——常用命令再学习
git config --global user.name "你的名字" git config --global user.email "你的邮箱"
不愿意做鱼的小鲸鱼
2022/09/26
2320
CentOS下安装配置Subversion(SVN)及CLI SVN常用命令
本文介绍了如何在CentOS下安装配置Subversion(SVN)以及CLI SVN常用命令。包括安装相关组件、基本配置、添加用户、设置版本库、导入数据、检出、提交、添加/删除文件、查看日志以及访问控制清单设置等。
雷大亨
2018/01/01
1.2K0
svn 客户端批量备份数据(图+文)
缘由 商业用途的规则,数据与谨慎便成了不可替代的王道,我今天也说svn,在客户端批量备份数据。 前提 考虑跨平台与易用性,选择批处理(.bat),既然是批处理,少不了的便是命令和执行命令的平台,这个执行平台的命令为svn.exe(默认只有svn的服务器端用),命令下面会有介绍。 解决方案 既然svn.exe是服务器端的,那么客户端有没有办法安装此环境呢,答案是肯定的。 独立执行svn命令的安装包下载址(各种操作系统都有):http://subversion.apache.org/packages.html
磊哥
2018/05/08
1.5K0
svn 客户端批量备份数据(图+文)
相关推荐
SVN常用命令
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验