公钥密码学Public-Key Cryptography

公钥或非对称密码学的发展是整个密码学历史上最伟大的,也许是唯一真正的革命。The development of public-key, or asymmetric, cryptography is the greatest and perhaps the only true revolution in the entire history of cryptography.

公钥算法基于数学函数,而不是替换和排列。public-key algorithms are based on mathematical functions rather than on substitution and permutation.

公钥加密是不对称的,涉及使用两个单独的密钥,两个密钥的使用在机密性、密钥分发和身份验证方面具有深远的影响。public-key cryptography is asymmetric, involving the use of two separate keys, the use of two keys has profound consequences in the areas of confidentiality, key distribution, and authentication.

几个常见的误解Several Common Misconceptions

公钥加密更安全?Public-key encryption is more secure?

事实上,任何加密方案的安全性都取决于密钥的长度和破解密码所涉及的计算工作量。In fact, the security of any encryption scheme depends on the length of the key and the computational work involved in breaking a cipher.

原则上,从抵抗密码分析的角度来看,对称加密或公钥加密都没有什么优势。There is nothing in principle about either symmetric or public-key encryption that makes one superior to another from the point of view of resisting cryptanalysis.

公钥加密使对称加密过时了?Public-key encryption is a general-purpose technique that has made symmetric encryption obsolete?

相反,由于当前公钥加密方案的计算开销,似乎没有可以预见的放弃对称加密的可能性。On the contrary, because of the computational overhead of current public-key encryption schemes, there seems no foreseeable likelihood that symmetric encryption will be abandoned.

公钥加密对密钥管理和签名应用程序的限制几乎是普遍接受的。The restriction of public-key cryptography to key management and signature applications is almost universally accepted.

与对称加密的密钥分发中心所涉及的相当麻烦的握手相比,使用公钥加密时密钥分发是微不足道的吗?Key distribution is trivial when using public-key encryption, compared to the rather cumbersome handshaking involved with key distribution centers for symmetric encryption?

需要某种形式的协议,通常涉及一个中央代理,所涉及的过程并不比对称加密所需的过程更简单,也不更有效。Some form of protocol is needed, generally involving a central agent, and the procedures involved are not simpler nor any more efficient than those required for symmetric encryption.

Applications

Encryption/decryption: The sender encrypts a message with the recipient’s public key, and the recipient decrypts the message with the recipient’s private key.

Digital signature: The sender “signs” a message with its private key.

Key exchange: Two sides cooperate to exchange a session key, which is a secret key for symmetric encryption generated for use for a particular transaction (or session) and valid for a short period of time.

Requirements

It is computationally easy to generate a key pair.

It is computationally easy for a sender, knowing the public key and the message to be encrypted, to generate the corresponding ciphertext.

It is computationally easy for the receiver to decrypt the ciphertext using the private key.

It is computationally infeasible for an adversary, knowing the public key, to determine the private key.

RSA

The correctness of encryption an decryption?

How to calculate d?

How to generate big prime?

Millar-Rabin algorithm

The calculation of encryption and decryption.

为什么安全?

  1. 大数分解问题:RSA的安全性基于大整数分解的困难程度。在RSA中,安全性依赖于两个非常大的质数的乘积。目前,尚未发现一种有效的算法能够在合理的时间内将一个大合数分解成其质因数。即使目前已知的最优算法(如大整数分解算法)也需要花费非常大的计算资源来破解较大的 RSA 密钥。因此,目前的计算资源尚不足以威胁 RSA 加密的安全性。

  2. 离散对数问题:RSA的安全性也依赖于离散对数问题的困难程度。在有限域上的离散对数问题是一个基本的数学难题,即给定一个底数、一个模数和一个指数,求解指数的问题。在RSA中,对一个大整数取模的指数运算在数学上等价于求解离散对数问题。目前尚未找到一种有效的算法能够在合理的时间内解决离散对数问题,尤其是在大整数域上。

哈希函数加密Hash Functions

A hash function H accepts a variable-length block of data M as input and produces a fixed-size result h = H(M), referred to as a hash value or a hash code. The kind of hash function needed for security applications is referred to as a cryptographic hash function.

A cryptographic hash function is an algorithm for which it is computationally infeasible (because no attack is significantly more efficient than brute force) to find either

a data object that maps to a pre-specified hash result(the one-way property)  

two data objects that map to the same hash result(the collision-free property)

Secure Hash Algorithm (SHA)

哈希加密的应用Applications of Hash Functions

信息认证Message Authentication

消息身份验证是用于验证消息完整性的机制或服务。Message authentication is a mechanism or service used to verify the integrity of a message.

数据完整性:接收到的数据与发送的完全相同(即,没有修改、插入、删除或重放)。that data received are exactly as sent (i.e., there is no modification, insertion, deletion, or replay).

数据有效:在许多情况下,需要身份验证机制确保所声称的发送方身份是有效的。In many cases, there is a requirement that the authentication mechanism assures that the purported identity of the sender is valid.

当使用散列函数提供消息身份验证时,散列函数值通常被称为消息摘要。When a hash function is used to provide message authentication, the hash function value is often referred to as a message digest.

数字签名Digital Signatures

One-Way Password File

Virus Detection

Pseudorandom Number Generator

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

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

相关文章

node.js如何实现留言板功能?

一、实现效果如下: 20240422_160404 二、前提配置: 配置:需要安装并且导入underscore模板引擎 安装:在控制台输入npm install underscore -save 文件目录配置: 1》在文件里建一个data文件夹,此文件夹下…

ContextMenuStrip内容菜单源对象赋值学习笔记(含源码)

一、前言 MetroTileItem属于第三方控件,无法定义ContextMenuStrip属性 想实现某子项点击菜单时,与源控件(按钮metroTileItem)的某值对应,用于动态控制按钮的状态或方法 1.1 效果 二、实现方法 2.1 方法1 (代码,说明见注释) private void metroTileItem_MouseDown(o…

【题解】AB5 点击消除(栈)

https://www.nowcoder.com/practice/8d3643ec29654cf8908b5cf3a0479fd5?tpId308&tqId40462&ru/exam/oj 把string当栈用&#xff0c;扫一遍就可以了&#xff0c;时间复杂度O(n) #include <iostream> #include <string> using namespace std;int main() {…

向量的点积和叉积的几何意义

1. 点积 点积(dot product)&#xff0c;又称标量积&#xff08;scalar product&#xff09;。结果等于。 可用于 判断的是否垂直求投影长度求向量是抑制作用还是促进作用 2. 叉积 叉积(cross product)&#xff0c;又称为向量积(vector product)。模长等于&#xff0c;方向…

Golang | Leetcode Golang题解之第43题字符串相乘

题目&#xff1a; 题解&#xff1a; func multiply(num1 string, num2 string) string {if num1 "0" || num2 "0" {return "0"}m, n : len(num1), len(num2)ansArr : make([]int, m n)for i : m - 1; i > 0; i-- {x : int(num1[i]) - 0fo…

详细说说,中介怎么做!CLHLS数据库探索抑郁症状的中介作用发文二区

零基础CHARLS发论文&#xff0c;不容错过&#xff01; 长期回放更新指导&#xff01;适合零基础&#xff0c;毕业论文&#xff0c;赠送2011-2020年CHARLS清洗后的数据全套代码&#xff01; 2024年3月28日&#xff0c;中国学者用CLHLS数据库最新数据&#xff08;2018年&#xff…

java-Arrays

一、Arrays的概述 Arrays是操作数组的工具类 二、Arrays的常用方法 Arrays的常用方法基本上都被static静态修饰&#xff0c;因此在使用这些方法时&#xff0c;可以直接通过类名调用 1.toString 语法&#xff1a;Arrays.toString(数组) 用于将数组的元素转换为一个字符串&a…

蓝桥杯第17169题——兽之泪II

问题描述 在蓝桥王国&#xff0c;流传着一个古老的传说&#xff1a;在怪兽谷&#xff0c;有一笔由神圣骑士留下的宝藏。 小蓝是一位年轻而勇敢的冒险家&#xff0c;他决定去寻找宝藏。根据远古卷轴的提示&#xff0c;如果要找到宝藏&#xff0c;那么需要集齐 n 滴兽之泪&#…

Git | 分支管理

Git | 分支管理 文章目录 Git | 分支管理1、理解分支2、创建分支&&切换分支3、合并分支4、删除分支5、合并冲突6、分支管理策略合并分支模式实际工作中分支策略bug分支删除临时分支 1、理解分支 分支就类似分身。 在版本回退中&#xff0c;每次提交Git都会将修改以git…

简单学量化——pandas的应用26——sort_values函数5

简单学量化——pandas的应用26——sort_values函数5 sort_values是pandas中的排序函数&#xff0c;语法如下&#xff1a; DataFrame.sort_values(by,axis0,ascendingTrue,inplaceFalse,kindquicksort,na_positionlast, ignore_indexFalse,keyNone) 前面我们学习了by、axis、a…

C++之写时复制(CopyOnWrite)

设计模式专栏&#xff1a;http://t.csdnimg.cn/4j9Cq 目录 1.简介 2.实现原理 3.QString的实现分析 3.1.内部结构 3.2.写入时复制 4.示例分析 5.使用场景 6.总结 1.简介 CopyOnWrite (COW) 是一种编程思想&#xff0c;用于优化内存使用和提高性能。COW 的基本思想是&am…

go的编译以及运行时环境

开篇 很多语言都有自己的运行时环境&#xff0c;go自然也不例外&#xff0c;那么今天我们就来讲讲go语言的运行时环境&#xff01; 不同语言的运行时环境对比 我们都知道Java的运行时环境是jvm &#xff0c;javascript的运行时环境是浏览器内核 Java -->jvm javascript…

FastWiki一分钟本地离线部署本地企业级人工智能客服

介绍 FastWiki是一个开源的企业级人工智能客服系统&#xff0c;它使用了一系列先进的技术和框架来支持其功能。 技术栈 前端框架&#xff1a;React LobeUI TypeScript后端框架&#xff1a;MasaFramework 基于 .NET 8动态函数&#xff1a;基于JavaScript V8引擎实现向量搜索…

物联网配网工具多元化助力腾飞——智能连接,畅享未来

随着物联网技术的迅猛发展&#xff0c;智能插座、蓝牙网关作为其中常见的智能物联设备&#xff0c;无论是功能还是外观都有很大的改进&#xff0c;在智能化越来越普遍的情况下&#xff0c;它们的应用场景也在不断拓宽。对于智能设备而言&#xff0c;配网方式的选择对于设备的成…

Jenkins CI/CD 持续集成专题一 Jenkins的安装和配置

一 jenkins 官方教程 安装Jenkins 二 安装 2.1 安装方式一 通过安装包的package方式安装 第一步下载链接&#xff1a; Download the latest package 第二步操作方式&#xff1a;打开包并按照说明操作即可安装 2.2 安装方式二 brew安装 第一 安装最新版本jenkins brew in…

【Java框架】SpringMVC(二)——SpringMVC数据交互

目录 前后端数据交互RequestMapping注解基于RequestMapping注解设置接口的请求方式RequestMapping注解的常用属性一个方法配置多个接口method属性params属性headers属性consumes属性produces属性 SpringMVC中的参数传递默认单个简单参数默认多个简单参数默认参数中有基本数据类…

山与路远程控制 一个基于electron和golang实现的远控软件

山与路远程控制 &#x1f3a5;项目演示地址 还在制作… ♻️项目基本介绍 山与路远程控制是基于electron(vue3)和golang实现的远程控制软件(项目界面主要模仿向日葵远程软件,如有侵权请告知),代码可能有点臃肿毕竟只花了一周左右写的无聊项目,如果对其感兴趣的大佬可以fork自…

【JavaScriptThreejs】判断路径在二维平面上投影的方向顺逆时针

原理分析 可以将路径每个连续的两点向量叉乘相加&#xff0c;根据正负性判断路径顺逆时针性 当我们计算两个向量的叉积时&#xff0c;结果是一个新的向量&#xff0c;其方向垂直于这两个向量所在的平面&#xff0c;并且其大小与这两个向量构成的平行四边形的面积成正比。这个新…

爱普生RX-8130CE内置电池控制 RTC

特点&#xff1a;(1)封装极小&#xff0c;集成度高RX-8130CE是一个带|2C接口的实时时钟模块&#xff0c;内部集成32.768KHz晶体振荡器。实时时钟功能不仅集成了年、月、日、星期、小时、分、秒的日历和时钟计数器&#xff0c;同时也有时间闹钟、间隔定时器、时间更新中断等功能…

算法练习|Leetcode49字母异位词分词 ,Leetcode128最长连续序列,Leetcode3无重复字符的最长子串,sql总结

目录 一、Leetcode49字母异位词分词题目描述解题思路方法:哈希总结 二、Leetcode128最长连续序列题目描述解题思路方法:总结 三、Leetcode3无重复字符的最长子串题目描述解题思路方法:双指针法总结sql总结 一、Leetcode49字母异位词分词 题目描述 给你一个字符串数组&#xf…