简单聊聊加密和加签的关系与区别

2023-11-23 23:45

本文主要是介绍简单聊聊加密和加签的关系与区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好,我是G探险者。

平时我们在项目上一定都听过加密和加签,加密可能都好理解,知道它是保障的数据的机密性,那加签是为了保障啥勒?它和加密有啥区别?

带着这个疑问,我们就来聊聊二者的区别。

加密(Encryption)和加签名(Signing)这两种技术在确保数据安全和完整性方面发挥着关键作用。虽然这两种技术常被提及,但它们各自的功能和应用却有着明显的差异。

1.加密:保护数据内容的机密性

加密是一种通过将数据转换成不可读形式的方法,以防止未授权的访问。这一过程涉及使用密钥(Key)将原始数据(明文)转换为加密后的数据(密文)。

  • 目的: 保护数据的机密性,确保只有授权的接收方能够阅读数据内容。
  • 常用算法: RSA、ECC(Elliptic Curve Cryptography)等。
  • 特点: 非对称加密通常用于加密小量数据,如加密其他密钥或密钥交换,因为它相比对称加密来说计算量更大。

加密分为两类:

对称加密: 使用相同的密钥进行数据的加密和解密。例如,AES(Advanced Encryption Standard)是一种常用的对称加密算法。

非对称加密: 使用一对密钥,其中公钥用于加密,私钥用于解密。RSA(Rivest-Shamir-Adleman)算法是非对称加密的典型例子。

2. 加签名:验证数据来源和完整性

加签名是一种用来验证数字信息完整性和来源真实性的技术。通过使用私钥生成签名,然后使用相应的公钥进行验证。这个过程确保了数据在传输过程中没有被篡改,并且证实了数据来源的合法性。

  • 目的: 验证数据的完整性和来源的真实性,确保数据在传输过程中未被篡改,并验证发送方的身份。
  • 密钥使用: 签名是使用发送方的私钥生成的,任何人都可以使用发送方的公钥来验证签名,但只有发送方才能生成这个签名。
  • 常用算法: RSA、DSA(Digital Signature Algorithm)、ECDSA(Elliptic Curve Digital Signature Algorithm)等。
  • 特点: 加签名不对数据本身进行加密,而是生成一个小的、基于原始数据的数字指纹(通常通过哈希函数产生)。

3. 加密与加签名的关系和区别

虽然加密和加签名在保护信息安全方面共同作用,但它们的目的和应用有着本质的不同。

特性/操作加密 (Encryption)加签名 (Signing)
目的保护数据的机密性。验证数据的完整性和来源的真实性。
工作方式对称加密使用同一密钥进行加解密,非对称加密使用公钥加密和私钥解密。使用私钥生成签名,使用公钥验证签名。
密钥使用对称加密中同一密钥用于加密和解密;非对称加密中使用一对密钥,公钥加密,私钥解密。私钥用于生成签名,公钥用于验证签名。
数据可见性加密后的数据不可读,只有拥有密钥的人能解密查看原始数据。签名不影响数据的可读性,任何人都可以读取数据,但只有签名者才能生成有效签名。
安全目标防止未授权访问和阅读数据内容。确保数据未被篡改,并验证数据来源的真实性。
应用场景保护数据传输过程中的隐私(如加密邮件、文件、网络数据等)。确认数据的合法来源和完整性(如软件更新验证、文档签名、身份认证等)。
典型使用敏感数据的存储和传输,如个人信息、商业秘密等。软件分发、电子商务交易、数字合同等场景,确保数据和交易的安全性。

4. 小结

  • 加密 侧重于保护数据内容的机密性,使得数据内容仅对授权用户可见。
    公钥加密,私钥解密:在非对称加密中,发送方使用接收方的公钥对数据进行加密,只有拥有对应私钥的接收方能够解密。这确保了只有特定的接收者能够访问加密数据。

  • 加签名则侧重于验证数据的完整性和来源的真实性,确保数据未被篡改且来源可靠。
    私钥加签,公钥验签:在数字签名的过程中,发送方使用自己的私钥对数据(或其哈希值)进行加签。任何人都可以使用发送方的公钥来验证签名,以确认数据的完整性和发送方的身份。

这篇关于简单聊聊加密和加签的关系与区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/420892

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 10130 简单背包

题意: 背包和 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使