当前位置: 首页 > news >正文

加密算法、哈希算法及其区别+国密简介

现代加密算法是信息安全领域中常用的算法,用于保护数据的机密性和完整性。以下是一些常用的现代加密算法:

加密算法(Encryption Algorithm)

  1. 目标:加密算法的主要目标是保密性(Confidentiality),它用于将明文数据转换为密文数据,以确保只有授权的用户或实体可以解密和访问数据。加密算法的目标是隐藏信息内容,以便数据在传输或存储过程中不会被未经授权的人或者计算机系统所读取。

  2. 工作方式:加密算法使用密钥(密钥可能是对称的或非对称的)来对数据进行加密。加密后的数据可以在需要时通过解密操作还原为原始明文。

  3. 安全性需求:加密算法需要满足一定的安全性需求,如抵抗攻击(如密码破解、中间人攻击等)。

对称加密(Symmetric Encryption)

  • 工作原理:对称加密使用相同的密钥(称为对称密钥)来加密和解密数据。加密和解密过程使用相同的密钥,因此速度通常较快。

  • 应用场景

    • 保密性:对称加密主要用于确保数据的机密性。例如,将敏感文件存储在磁盘上时,可以使用对称加密来加密这些文件,以便只有授权的用户可以解密和访问它们。

    • 加密通信:在加密通信中,对称加密用于加密数据传输。然而,一个挑战是如何安全地共享对称密钥,以便通信双方可以解密消息。

  • 常见算法

    • AES(Advanced Encryption Standard:高级加密标准):目前广泛使用的对称加密算法,支持不同的密钥长度(如AES-128、AES-256)。

    • DES(Data Encryption Standard:数据加密标准):较旧的对称加密算法,已不再被推荐使用。

    • 3DES(Triple Data Encryption Standard :Triple DES):对DES的改进版本,提供更高的安全性。

非对称加密(Asymmetric Encryption)

  • 工作原理:非对称加密使用一对密钥,公钥和私钥。公钥用于加密数据,私钥用于解密数据。加密的数据可以使用公钥加密,但只有持有相应私钥的实体才能解密它。

  • 应用场景:

    • 数据完整性和身份验证:非对称加密用于数字签名,以验证数据的完整性和确保发送者的身份。

    • 密钥交换:非对称加密用于安全地交换对称密钥。例如,在TLS/SSL协议中,非对称加密用于安全地交换对称密钥,然后使用对称密钥进行通信。

    • 安全通信:非对称加密用于安全通信协议,如SSH和PGP。

  • 常见算法

    • RSA(Rivest-Shamir-Adleman):用于加密和数字签名,广泛用于安全通信和身份验证。

    • DSA(Digital Signature Algorithm):主要用于数字签名。

    • ECC(Elliptic Curve Cryptography):基于椭圆曲线的算法,提供相同安全性下更短的密钥长度。

哈希函数(Hash Function)

  1. 目标:哈希函数的主要目标是数据完整性和快速数据检索。它将输入数据(明文)转换为固定长度的哈希值(散列值),该哈希值通常是一串看似随机的字符。哈希函数的目标是将输入数据映射到一个唯一的哈希值,以便快速验证数据完整性和检索数据。它通常不可逆,不能还原原始数据。

  2. 工作方式:哈希函数是单向的,它不可逆。给定相同的输入,哈希函数始终生成相同的哈希值。但无法通过哈希值还原出原始输入数据。

  3. 应用场景:哈希函数常用于密码存储、数字签名、数据完整性检查、数据结构(如哈希表)等领域。

哈希函数:哈希函数将输入数据转换为固定长度的哈希值,通常用于验证数据完整性和密码存储。常见的哈希函数包括:

  • SHA-256(Secure Hash Algorithm 256位版本):SHA-2家族的一部分,用于数字签名和数据完整性验证。

  • MD5(Message Digest 5):较旧的哈希算法,已不再被广泛用于安全目的。

  1. 密码学协议:密码学协议结合了不同的加密算法和安全机制,用于安全通信和身份验证。一些常见的密码学协议包括:

    • TLS/SSL(Transport Layer Security/Secure Sockets Layer):用于安全地传输数据,如HTTPS。

    • SSH(Secure Shell):用于远程访问和文件传输的安全协议。

    • IPsec(Internet Protocol Security):用于保护IP通信的协议套件。

  2. 密码学工具库:开发人员可以使用密码学工具库来实现各种加密算法和协议。常见的密码学工具库包括OpenSSL、Libsodium、Bouncy Castle等。

总结

  • 加密算法用于保护数据的机密性,以确保数据在传输或存储时不被未经授权的人读取。

  • 哈希函数用于验证数据完整性和快速检索数据,它通常不可逆,不能还原原始数据。

  • 加密算法通常需要使用密钥来进行加密和解密操作,而哈希函数不需要密钥。

  • 哈希函数的输出通常具有固定的长度,而加密算法的输出可以是不同长度的密文。

  • 哈希函数的主要特征是碰撞抵抗性,即难以找到两个不同的输入产生相同的哈希值。

我国的一些加密算法

  1. SM系列算法:SM代表“商密”(Chinese Commercial Cryptographic Algorithm),是中国国家密码管理局发布的一系列密码算法标准。其中包括:

    • SM2:椭圆曲线公钥密码算法,用于数字签名和密钥交换。

    • SM3:密码杂凑算法,类似于SHA-256,用于生成固定长度的哈希值。

    • SM4:分组密码算法,类似于AES,用于数据加密和解密。

  2. ZUC:ZUC是一种流密码算法,被广泛用于无线通信领域,如3G和4G移动通信的加密。

  3. SMS4:SMS4是一种分组密码算法,通常用于加密存储在智能卡中的数据。

  4. LWPKI:国产密码基础设施(Lightweight Public Key Infrastructure)是一种基于SM2的公钥基础设施,用于数字证书管理和认证。

这些算法在中国的政府和商业应用中得到广泛使用,并且一些算法已经被国际标准化组织(ISO/IEC)采纳。中国还在不断发展和推广自主研发的密码技术。请注意,虽然这些算法在中国境内使用广泛,但在国际范围内仍然有一些其他常用的国际加密算法,如AES、RSA、SHA等。

这些加密算法和协议在计算机安全中发挥着关键作用,用于保护敏感数据、确保通信的隐私性和完整性。在选择加密方法时,应根据具体需求和安全要求来决定使用哪种算法。此外,由于密码学领域不断发展,保持系统和应用程序的安全性需要不断更新和改进加密方法。

思考

通过对上述内容的了解,我们可以看到SM3更像SHA256:

SM3可以被看作是类似于SHA-256(Secure Hash Algorithm 256位版本)的密码杂凑算法。它们有一些相似之处:

  1. 输出长度: SM3和SHA-256都生成256位(32字节)的固定长度哈希值。

  2. 安全性: SM3和SHA-256都被认为是强大的哈希算法,能够抵抗常见的密码学攻击,如碰撞攻击和预像攻击。

  3. 应用: 两者都用于验证数据的完整性,以确保数据在传输或存储过程中没有被篡改。它们还可用于数字签名、密码学协议和其他安全应用。

尽管在很多方面相似,但SM3和SHA-256是不同的算法,由不同的组织和标准制定机构定义。SM3是中国国家标准,而SHA-256是由美国国家安全局(NSA)发布的标准。

那么是不是可以认为SM3没有SHA512安全性高?

在密码学中,安全性的评估不仅取决于输出位数(比特数),还取决于算法的设计和强度。因此,不能仅根据输出位数来判断算法的相对安全性。

SHA-512比SM3的输出位数更大(512位对比256位),但这并不意味着SHA-512就比SM3安全。安全性还受到以下因素的影响:

  1. 算法设计: 安全哈希算法的设计包括其内部结构、轮函数、密钥扩展等方面。SHA-512和SM3都经过专业的密码学设计,但具体的设计细节可能会影响算法的强度。

  2. 抗碰撞性: 安全性的一个关键方面是抵抗碰撞攻击的能力,即使攻击者能够生成两个不同的输入,但它们具有相同的哈希输出。这需要算法具有足够的抗碰撞性。

  3. 密码分析: 安全性还取决于是否已经发现了攻击算法的有效方法。如果某个算法被发现存在弱点,那么它的安全性将受到威胁。

  4. 密钥长度: 在某些应用中,哈希算法可能与密钥一起使用,密钥的长度也会影响安全性。

综上所述,安全性评估是一个复杂的过程,不能简单地根据输出位数来判断。SHA-512和SM3都被认为是强大的密码杂凑算法,但具体的应用场景和威胁模型会影响选择哪种算法。在实际应用中,通常会根据具体需求和标准来选择合适的哈希算法。

相关文章:

加密算法、哈希算法及其区别+国密简介

现代加密算法是信息安全领域中常用的算法,用于保护数据的机密性和完整性。以下是一些常用的现代加密算法: 加密算法(Encryption Algorithm) 目标:加密算法的主要目标是保密性(Confidentiality)…...

LeetCode算法二叉树—222. 完全二叉树的节点个数

目录 222. 完全二叉树的节点个数 - 力扣(LeetCode) 代码: 运行结果: 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能…...

Scrapy-应对反爬虫机制

参考自https://blog.csdn.net/y472360651/article/details/130002898 记得把BanSpider改成自己的项目名,还有一个细节要改一下,把代码user换成user_agent 禁止Cookie 在Scrapy项目中的settings文件,可以发现文件中有以下代码: COOKIES_ENA…...

Direct3D字体

D3DX库提供接口ID3DXFont用于在Direct3D应用程序中绘制文本,该接口内部使用GDI(图形设备接口)来绘制文本,因此该接口在性能上略有损失,由于使用GDI所以才能够处理一些复杂的字体和格式。可以用D3DXCreateFontIndirect函数来创建一个ID3DXFont…...

麒麟软件操作系统下载

银河麒麟高级服务器操作系统V10(鲲鹏版): https://distro-images.kylinos.cn:8802/web_pungi/download/share/yYdlHoRzAre1mFPK9s3NviID4Lg5w6MW/ 银河麒麟高级服务器操作系统V10(飞腾版): https://dist…...

ARM---实现1-100求和任务

.text .globl _start_start:mov r0, #0x1mov r1, #0x1 给r1加一固定1不变mov r2, #0x64 100判断bl sumcmp r1, r2 sum:addcc r1, r1,#0x1 r1自增addcc r0, r0, r1 r0求和movcc pc,lrstop:b stop.end...

Vue+Three.js实现三维管道可视化及流动模拟续集

继上一篇文章中实现了三维管道的可视化和流动模拟,经过反馈,对大家还是有一定帮助,因此就编写了一个续集,相当于增加了一些常见的通用共性功能,主要在前面的基础上增加了以下功能:1.新增直角拐弯的管道,工业中很多管道都是横平竖直的,相当于我们装修的水管或电线等,不…...

基于Xilinx UltraScale+ MPSOC(ZU9EG/ZU15EG)的高性能PCIe数据预处理平台

PCIE707是一款基于PCIE总线架构的高性能数据预处理FMC载板,板卡具有1个FMC(HPC)接口,1路PCIe x4主机接口、1个RJ45千兆以太网口、2个QSFP 40G光纤接口。板卡采用Xilinx的高性能UltraScale MPSOC系列FPGA作为实时处理器&#xff0c…...

IMX6ULL ARM Linux开发板SD卡启动,SD卡的分区与分区格式化创建

一、确定TF卡挂载到ubuntu上的设备名称及分区情况 1. 在ubuntu不接入TF卡的情况下, 使用df -lh /dev/sd*命令查看当前"/dev/sd开头"的设备。 ##输入df -lh /dev/sd*命令,敲回车键 ~$ df -lh /dev/sd* 2.将TF卡接入到ubuntu,再次使…...

去哪里找图标?

2023年9月27日,周三下午 为了准备软件工程的期末项目,我需要找给项目找一些图标 目录 1、iconfont 2、material-design-icons 3、Font-Awesome 4、feather 5、Bootstrap 官方图标库 1、iconfont iconfont-阿里巴巴矢量图标库 这个需要注册&…...

Js数组去重都有哪些方法?

1. indexOf 定义: indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回 -1。注意:iindexOf() 方法区分大小写。语法: string.indexOf(searchvalue,start)//;searchvalue必需。searchvalue可选…...

Vue简单使用

1.Vue使用环境 安装nodejs,新版nodejs集成npm;使用node -v和npm -v验证是否安装成功 修改npm镜像为淘宝npm镜像,然后使用cnpm指令代替npm npm install -g cnpm --registryhttp://registry.npm.taobao.org插件安装 Vetur Vue智能提示...

2309C++nlohmann数格示例2

JSON指针和JSON补丁 该库支持JSON指针(RFC6901)来处理结构化值.而,JSONPatch(RFC6902)允许描述两个JSON值之间的差异,有效地允许Unix已知的补丁和差异操作. //一个JSON值 json j_original R"({"baz": ["one", "two", "three"]…...

企业沟通平台私有部署,让沟通更高效数据更安全

在现代企业中,高效的内部沟通对于保持团队合作、提升工作效率至关重要。而企业沟通平台私有部署则成为了越来越多企业的选择,以满足数据安全性、合规性以及定制化需求。WorkPlus 作为领先品牌,提供高质量的企业沟通平台私有部署解决方案&…...

Java流的体系结构(一)

文章目录 一、文件读写操作FileReader和FileWriter1.main()2.FileReader1.说明:2.代码案例 3.对read()操作升级:使用read的重载方法4.FileWriter的使用1.说明2.代码 4.FileReader和FileWriter综合使用 二、使用步骤1.引入库 二、测试FileInputStream和Fi…...

什么是Redux?它的核心概念有哪些?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是Redux?⭐ 它的核心概念有哪些?⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发…...

细胞机器人系统中的群体智能

摘要 细胞机器人系统具有“智能”行为能力。本文分析了这种智能的含义。本文根据上述不可思议智能行为的不可预测性来定义机器人智能和机器人系统智能。对不可预测性概念的分析与(1)统计不可预测、(2)不可访问、(3&am…...

【办公自动化】用Python将PDF文件转存为图片(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

不容易解的题9.26

想编写这一版,是因为之前复习字符串或者双指针等其他栏目时候没有写文章,但是现在回过头来刷,所以想着写一篇,我在leetcode的收藏夹里收藏了一些我自认为需要多加练习的题目,它们并非是很难的,极不易理解的…...

易点易动固定资产管理系统:精准管理与科学采购,降本增效的利器

在现代企业管理中,固定资产的精准管理和科学采购已成为提升企业效率和降低成本的重要环节。为了满足企业管理的需求,我们自豪地介绍易点易动固定资产管理系统,这是一款功能强大的软件解决方案,旨在帮助企业实现固定资产的精准管理…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

Java入门学习详细版(一)

大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了&#xff0c;很多小伙伴想体验鸿蒙电脑版操作系统&#xff0c;可惜&#xff0c;鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机&#xff0c;来体验大家心心念念的鸿蒙系统啦&#xff01;注意&#xff1a;虚拟…...