首页 > 编程语言 >非对称加密及RSA算法

非对称加密及RSA算法

时间:2022-11-07 13:05:12浏览次数:59  
标签:私钥 RSA 解密 算法 加密 非对称


非对称加密及RSA算法

 

最近在学习区块链相关的知识,发现其保证去中心化的一个重要的手段就是基于密码学中的非对称加密。

何为非对称加密?

在回答这个问题之前,我觉得有比说一下对称加密。所谓对称加密,就是加密和解密都使用同一个密钥。那么很显然,非对称加密就是加密和解密使用不同的密钥。

非对称加密有两个密钥:公钥和私钥,公钥是公开的,私钥是私密的,公钥加密的可以用私钥解开,私钥加密的东西可以用公钥解开,即加密和解密的密钥是不同的。举个例子,甲要发信息给乙,那么甲可以使用乙方的公钥对机密信息进行加密签名后发送给乙方,乙方收到数据后用自己的私钥对数据进行解密。

好了,非对称加密的概念我们很好理解,那么具体如何实现非对称加密呢?

常用的加密算法有​​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为解密后的信息。

 

 

 

标签:私钥,RSA,解密,算法,加密,非对称
From: https://blog.51cto.com/u_15862521/5828916

相关文章

  • aes 加密和解密
    packagecom.example.myapp.commons.utils.aes;publicclassAESTester{staticStringkey;static{try{key=AESUtils.getSecretKey();......
  • RabitMQ密码是否加密的说明
    操作说明:用附件的platform-middleware-stream-0.0.4-SNAPSHOT.jar,可针对现场的密码生成密文,然后将密文配置到监管的配置文件就可以了。cd到jar包所在目录位置并执行......
  • js中变量base64加密传输
    首先对base64进行定义:varBase64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){......
  • RSA加密算法
    RSA加密算法概述    RSA算法是一种经典的非对称加密算法,密钥一般由三个数字构成:N、E、D。对于一些信息,我们总有办法将其转化为数字,设该数字为X,对应的密文是Y。则......
  • NEO与以太坊:为什么NEO可能是2018年最强的加密货币
    NEO,它可以与以太坊竞争吗?NEO和以太坊你会下重注投资其中的哪一个? 2013年年末,以太坊创始人VitalikButerin(V神)发布了以太坊初版白皮书,启动了项目。2014年7月24日起,以太坊......
  • Openssl Des3对压缩文件进行加密命令详解
    群友提问:致力于明天:tar-cvf-WMG_Back_"$Today"|openssldes3-salt-khY91gd3GJAAfghECleLwWQAPGK9Cxs-out$dir_backup_today.tar.des3致力于明天:有人懂这个......
  • 使用 Java 类生成 MD5 加密字符
    MD5常用于密码加密,例如,在注册时可以将密码转为MD5再放入数据库,在登录时校验登录密码和数据库存放的加密密码是否一致,来保证密码在数据库中存储的安全性。下面介绍使用......
  • 【网安】第一次写的简单加密程序
    教学链接:https://www.bilibili.com/video/BV1UG411L74y?p=33&vd_source=01e5c1103fb910315f88a7bdc747b3d5c语言实现的简单加密程序核心加密原理:将文件逐字符读取和密码......
  • 19、对数字进行加密
    题目:输入num为四位数,对其加密规则如下:  1.每一位数分别加5,然后将其替换为该数除以10取余的结果  2.将该数的第一位和第四位互换,第二位与第三位互换  3.最后合......
  • 学习笔记——base标签、加密方式、JDBC、将java中添加的数据增加到数据库中
    2022-11-03一、base标签1、作用:用于添加web项目的前缀。2、放置位置:放置在head标签内部,一般放在首行。3、使用方式:<basehref="/项目名称/">,在html网页中的其他(例如:图......