密码学基本概念(一)

区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者聚集地

作者:于中阳

来源:区块链兄弟

原文链接:http://www.blockchainbrother.com/article/72

著权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1.发送者和接收者

发送者(sender)即是发送信息消息的人,其想发送消息给接收者(receiver),接收者即是接收信息消息的人。在发送过程中,发送者和合法接收者都希望安全的发送及接收信息消息,并且需要确信第三方(窃听者)不能截取或阅读发送的信息消息。

2.消息和加密

消息(message)即为明文(plaintext)。用某种特定的方式方法对其进行“伪装”处理,以隐藏其的内容的过程,我们称之为加密(encryption)。而被加密之后的消息,我们称之为密文(ciphertext)。当我们将密文转变为明文,这一过程我们称之为解密(decryption)。

这一过程简单来说就是:“明文”>>(加密)>>“密文”>>(解密)>>“原始明文”。

在这一过程当中,使消息保密的技术被称为密码编码学(cryptography),从事这一工作的人,我们称之为密码编码者(cryptographer)。与此对立相反的就是破译密文的技术,我们称之为密码分析学(cryptanalysis),从事这一工作的人即对密码进行分析处理的专业人员,我们称之为密码分析者(cryptanalyst)。

而密码学(cryptology)包括了密码编码学和密码分析学两个部分,所以同时精于此二者的人,我们称之为密码学家(cryptologist)。由于密码学是作为数学的一个分支,现代的密码学家通常也是理论数学家。

注:密码学和数学有着千丝万缕的联系,学习密码学的同时也需要学习数学知识。

明文我们一般用M或P表示,明文可以是位序列、位图、文本文件、数字化的语音序列或数字化的视频图像等等。对于计算机而言,M一般仅简单指二进制数据。明文可以被传送或存储,无论哪种情况,M指待加密的信息消息。

密文我们用C表示,其也是二进制数据,有时和M一样大,有时比M大,但通过压缩和加密的结合,C同样有可能比M小。现我假定加密函数为E,那么E作用于M得到C的过程,可以用数学公式表示:

E(M)=C

相反的,若假定解密函数为D,解密函数D作用于C产生M的过程可以表示为:

D(C)=M

先进行加密操作,后进行解密操作,原始的明文将得以恢复,故有以下等式成立:

D( E(M) )=M

3.密码学的作用

密码学通常的作用是提供机密性,但除此之外,密码学还有以下作用。

鉴别(authentication)消息的接收者应该能够确认消息的来源,第三方入侵者不可能伪装成合法的发送者和接收者。

完整性(integrity)信息消息的接收者应该能够验证信息消息在传送过程中没有被篡改,第三方入侵者不可能用虚假的信息消息代替合法的信息消息。

抗抵赖(nonrepudiation)信息消息的发送者事后不可能单方面虚假的否认是其发送了信息消息。

这些基本的功能都是通过计算机进行社会交流与协作至关重要的需求。现代社会已经变得离不开计算机,计算机也在人类社会的生产建设以及信息交互中扮演了极其重要的角色,以上密码学的基本作用保证了合法用户身份证明,信息消息真实性等,就像面对面的信息验证一样。

文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述

转载于:https://juejin.im/post/5aeaa55d518825670c45c326

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA-初步认识-第十三章-多线程(验证同步函数的锁)

一. 至于同步函数用的是哪个锁,我们可以验证一下,借助原先卖票的例子 对于程序中的num,从100改为400,DOS的结果显示的始终都是0线程,票号最小都是1。 票号是没有问题的,因为同步了。 有人针对只出现0线程&a…

追求卓越追求完美规范学习_追求新的黄金比例

追求卓越追求完美规范学习The golden ratio is originally a mathematical term. But art, architecture, and design are inconceivable without this math. Everyone aspires to golden proportions as beautiful and unattainable perfection. By visualizing data, we chal…

leetcode 275. H 指数 II

给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照 升序排列 。编写一个方法,计算出研究者的 h 指数。 h 指数的定义: “h 代表“高引用次数”(high citations),一名科研…

Node js开发中的那些旮旮角角 第一部

#前戏 上一周是我到现公司来最忙碌的(最有意思的)一周了,为什么这么说呢?因为项目中需要提供服务端对用户病人信息的一个汇总并以email的形式分享信息的接口,在几天的时间里调研处理一套实施方案。我们服务端是Node.js…

文件2. 文件重命名

servlet对本机已存在的文件进行重命名。 .jsp界面 1 <form action"<%basePath %>fileAction" method"get" >2 <table>3 <tr>4 <td>输入文件路径</td>5 <td&…

js字符串slice_JavaScript子字符串示例-JS中的Slice,Substr和Substring方法

js字符串sliceIn daily programming, we often need to work with strings. Fortunately, there are many built-in methods in JavaScript that help us while working with arrays, strings and other data types. We can use these methods for various operations like sea…

leetcode 218. 天际线问题

城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度&#xff0c;请返回由这些建筑物形成的 天际线 。 每个建筑物的几何信息由数组 buildings 表示&#xff0c;其中三元组 buildings[i] [lefti, righti, heighti] 表示&#xff1a…

[Android Pro] 终极组件化框架项目方案详解

cp from : https://blog.csdn.net/pochenpiji159/article/details/78660844 前言 本文所讲的组件化案例是基于自己开源的组件化框架项目github上地址github.com/HelloChenJi…其中即时通讯(Chat)模块是单独的项目github上地址github.com/HelloChenJi… 1.什么是组件化&#xff…

如何写一个vue指令directive

举个例子 &#xff1a;clickoutside.js const clickoutsideContext clickoutsideContext;export default {/*param el 指令所绑定的元素param binding {Object} param vnode vue编译生成的虚拟节点*/bind (el, binding, vnode) {const documentHandler function(e) {console.…

安装angular cli_Angular 9适用于初学者—如何使用Angular CLI安装第一个应用程序

安装angular cliAngular is one of the most popular JavaScript frameworks created and developed by Google. In the last couple of years, ReactJS has gained a lot of interest and has become the most popular modern JS library in the industry. But this doesn’t …

leetcode 1818. 绝对差值和

给你两个正整数数组 nums1 和 nums2 &#xff0c;数组的长度都是 n 。 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|&#xff08;0 < i < n&#xff09;的 总和&#xff08;下标从 0 开始&#xff09;。 你可以选用 nums1 中的 任意一个 元素来…

【转载】keil5中加入STM32F10X_HD,USE_STDPERIPH_DRIVER的原因

初学STM32&#xff0c;在RealView MDK 环境中使用STM32固件库建立工程时&#xff0c;初学者可能会遇到编译不通过的问题。出现如下警告或错误提示&#xff1a; warning: #223-D: function "assert_param" declared implicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx…

下岗职工_下岗后我如何获得多位软件工程师的面试

下岗职工“Opportunities to find our deeper powers come when life seems most challenging.” -Joseph Campbell“当生活似乎最具挑战性时&#xff0c;就有机会找到我们更深层的力量。” 约瑟夫坎贝尔 I was recently laid off for the first time in my life. I realized t…

1846. 减小和重新排列数组后的最大元素

给你一个正整数数组 arr 。请你对 arr 执行一些操作&#xff08;也可以不进行任何操作&#xff09;&#xff0c;使得数组满足以下条件&#xff1a; arr 中 第一个 元素必须为 1 。任意相邻两个元素的差的绝对值 小于等于 1 &#xff0c;也就是说&#xff0c;对于任意的 1 <…

bashdb常用命令

一、列出代码和查询代码类&#xff1a; l 列出当前行以下的10行- 列出正在执行的代码行的前面10行. 回到正在执行的代码行w 列出正在执行的代码行前后的代码/pat/ 向后搜索pat&#xff1f;pat&#xff1f;向前搜索pat二、Debug控制类&#xff1a; h 帮助help 命令 得到…

podcast播客资源_为什么播客是我的新维基百科-完美的非正式学习资源

podcast播客资源In this article, I’ll explain why podcasts replaced a lot of my Wikipedia usage for informal learning. I’ll also talk about how I listen to 5 hours of podcasts every day.在本文中&#xff0c;我将解释为什么播客代替了我的许多Wikipedia用于非正…

剑指 Offer 53 - I. 在排序数组中查找数字 I(二分法)

统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums [5,7,7,8,8,10], target 8 输出: 2 示例 2: 输入: nums [5,7,7,8,8,10], target 6 输出: 0 限制&#xff1a; 0 < 数组长度 < 50000 解题思路 先用二分法查找出其中一个目标元素再向目标元素两边查找…

MVC与三层架构区别

我们平时总是将三层架构与MVC混为一谈&#xff0c;殊不知它俩并不是一个概念。下面我来为大家揭晓我所知道的一些真相。 首先&#xff0c;它俩根本不是一个概念。 三层架构是一个分层式的软件体系架构设计&#xff0c;它可适用于任何一个项目。 MVC是一个设计模式&#xff0c;它…

tensorflow 实现逻辑回归——原以为TensorFlow不擅长做线性回归或者逻辑回归,原来是这么简单哇!...

实现的是预测 低 出生 体重 的 概率。尼克麦克卢尔&#xff08;Nick McClure&#xff09;. TensorFlow机器学习实战指南 (智能系统与技术丛书) (Kindle 位置 1060-1061). Kindle 版本. # Logistic Regression #---------------------------------- # # This function shows ho…

sdlc 瀑布式 生命周期_SDLC指南–软件开发生命周期的阶段和方法

sdlc 瀑布式 生命周期When I decided to teach myself how to code almost four years ago I had never heard of, let alone thought about, the software development life cycle.当我差不多四年前决定教自己如何编码时&#xff0c;我从未听说过软件开发生命周期&#xff0c;…