详细解析非对称加密及RSA算法

news/2024/7/7 20:57:35
想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!!

最近在学习区块链相关的知识,发现其保证去中心化的一个重要的手段就是基于密码学中的非对称加密。
何为非对称加密?
在回答这个问题之前,我觉得有比说一下对称加密。所谓对称加密,就是加密和解密都使用同一个密钥。那么很显然,非对称加密就是加密和解密使用不同的密钥。
非对称加密有两个密钥:公钥和私钥,公钥是公开的,私钥是私密的,公钥加密的可以用私钥解开,私钥加密的东西可以用公钥解开,即加密和解密的密钥是不同的。举个例子,甲要发信息给乙,那么甲可以使用乙方的公钥对机密信息进行加密签名后发送给乙方,乙方收到数据后用自己的私钥对数据进行解密。
好了,非对称加密的概念我们很好理解,那么具体如何实现非对称加密呢?
常用的加密算法有RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。其中,使用最广泛的是RSA算法。下面我们就具体介绍一下RSA算法,主要参考博客安全体系(二)——RSA算法详解。
RSA
算法来源
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开头字母拼在一起组成的。
数学基础
质数:除了1和它自己不能被别的数整除,这个数就是质数。
互质:两个正整数,除了1以外,没有其他公因子,那么这两个数就是互质的。
欧拉函数:对于任意一个正整数n,如果n=p1k1p2k2…prkr,其中,p1,p2,…,pk为质数,那么在小于n的正整数中,可以用下面的公式求解与n互质的数的个数:
φ(n)=n(1-1/p1)(1-1/p2)…(1-1/pr)
欧拉定理:如果a和n互为质数,则aφ(n)≡1(mod n),其中φ(n)为n的欧拉函数。
模反元素:如果两个正整数a和n互质,那么一定可以找到整数b,使得ab-1被n整除,或者说ab被n除的余数是1。这时b被称为a的模反元素。用公式表示为:ab≡1(mod n)。

算法过程
密钥生成
1、选择两个不同的质数p和q;
2、计算两者的乘积为n,将n转换成二进制后,二进制的长度即为密钥的长度;
3、计算n的欧拉函数φ(n);
4、选择整个e,其中φ(n)>e>1,且e与φ(n)互质;
5、计算e对φ(n)的模范元素d;
6、将n和e封装成公钥,将n和d封装成私钥。

加密
me=c(mod n),其中m为需要加密的信息,c为加密后的信息。

解密
me=c(mod n),其中c为解密前的信息,m为解密后的信息。


http://lihuaxi.xjx100.cn/news/238505.html

相关文章

python如何编写数据库_如何在几分钟内用Python编写一个简单的玩具数据库

python如何编写数据库MySQL, PostgreSQL, Oracle, Redis, and many more, you just name it — databases are a really important piece of technology in the progress of human civilization. Today we can see how valuable data are, and so keeping them safe and stable…

开发自己的山寨Android注解框架

目录 开发自己的山寨Android注解框架开发自己的山寨Android注解框架 参考 Github黄油刀 Overview 在上一章我们学习了Java的注解(Annotation),但是我想大家可能感觉,虽然理解了也会学会,但是不知道干什么用,那么请继续忍受我这枯燥…

Android发布项目到外部仓库

为什么80%的码农都做不了架构师?>>> 关于android发布仓库到外部项目的文章,目前大概为分两类: 一种是发布到bintray、jcenter上,一种是将项目上传到github,然后利用jitpack自动打包,下面简单说…

哈希函数是什么,在区块链中有什么用

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!!哈希函数是什么? 哈希函数,又叫散列函数、散列算法,是一种从任何一种数据中创建小的数字“指纹”(…

Web漏洞扫描(一:利用WVS进行漏洞扫描)

任务一、利用WVS进行漏洞扫描 1.1、Acunetix WVS 的下载与安装; 1.1.1、WVS的安装(按照图中的指示执行); 1.1.2、勾选“Create a desktop shortcut”创建桌面图标,然后点击“Next”,选择“Install”&#…

如何在JavaScript中检测用户的首选配色方案

by Oskar Hane由Oskar Hane 如何在JavaScript中检测用户的首选配色方案 (How to detect a user’s preferred color scheme in JavaScript) In recent versions of macOS (Mojave) and Windows 10, users have been able to enable a system level dark mode. This works well…

以太坊系列之账户管理

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!!账户 以太坊有两种账户类型: 外部账户(EOA) 合约账户 所有账户的状态代表以太坊网络的状态,以太坊…

玩转“网上邻居”之网络配置(二)

接上篇二、混合系统网络目前实际应用中单一系统的对等网络已不是主流,主要是由于这种网络性能较低,缺乏很好看安全及网络管理能力。目前在各企事业单位中普遍应用的还是基于多系统的域结构混合网络。但因目前主流应用的系统比较多,所以各种网…