当前位置:网站首页>快速了解常用的非对称加密算法,再也不用担心面试官的刨根问底
快速了解常用的非对称加密算法,再也不用担心面试官的刨根问底
2022-06-23 12:46:00 【51CTO】
面试官:说一说你常用的加密算法有哪些?
加密算法通常被分为两种:对称加密算法和非对称加密算法。其中,对称加密算法在加密和解密时使用的密钥相同;非对称加密算法在加密和解密时使用的密钥不同,分为公钥和私钥。此外,还有一类叫做消息摘要算法,是对数据进行摘要并且不可逆的算法。
这次我们了解一下非对称加密算法。
非对称加密算法
非对称加密算法在加密和解密时使用两个不同的密钥,其中一个可以公开的密钥被称为公钥,另外一个完全保密的密钥被称为私钥。只有同一个公钥私钥对才能正常加密和解密。
对于同一个公钥私钥对,如果使用公钥对数据进行加密,只有用对应的私钥才能进行解密;如果使用私钥对数据进行加密,只有用对应的公钥才能进行解密。
常见的非对称加密算法有:RSA算法、DSA。
RSA算法
RSA算法是目前最有影响力的公钥加密算法,它由Ron Rivest、Adi Shamir和Leonard Adleman三位大佬在1977年麻省理工学院工作时一起提出的,RSA就是他们三人姓氏开头字母拼在一起组成的。

另外,1973年,在英国政府通讯总部工作的数学家Clifford Cocks在一个内部文件中提出了一个与之等效的算法,但该算法被列入机密,直到1997年才得到公开。
RSA算法利用了两个数论特性:
- p1、p2为两个质数, n=p1 * p2。已知p1、p2求n简单,已知n求p1、p2很难。
- (m^e) mod n=c,已知m、e、n求c简单,已知e、n、c求m很难。
公钥私钥生成过程:随机选取两个质数p1、p2,n=p1 * p2,再随机选取一个与φ(n)互质且小于φ(n)的整数e,然后再计算e对于φ(n)的模反元素d,最后得到n和e为公钥,n和d为私钥。
加密过程:(m^e) mod n = c,其中m为明文,c为密文,n和e为公钥。
解密过程:(c^d) mod n = m,其中m为明文,c为密文,n和d为私钥。
我们用Java写个例子:
运行结果如下:
RSA算法解决了对称算法的安全性依赖于同一个密钥的缺点。不过,RSA算法在计算上相当复杂,性能欠佳、远远不如对称加密算法。因此,在一般实际情况下,往往通过非对称加密算法来随机创建临时的对称密钥,然后通过对称加密来传输大量、主体的数据。
DSA
DSA(Digital Signature Algorithm,数字签名算法)是 Schnorr 和 ElGamal 签名算法的变种,基于模算数和离散对数的复杂度。
美国国家标准技术研究所(NIST)于1991年提出将DSA用于其DSS(DigitalSignature Standard,数字签名标准),并于1994年将其作为FIPS 186采用。
和RSA算法使用公钥加密私钥解密的方式不同,DSA使用私钥对数据进行加密生成数字签名,然后使用公钥解密后的数据和原数据进行对比,以验证数字签名。
数字签名提供信息鉴定(接收者可以验证消息的来源),完整性(接收方可以验证消息自签名以来未被修改)和不可否认性(发送方不能错误地声称它们没有签署消息)。
我们用Java写个例子:
运行结果如下:
通过Java的示例可以看到,不会直接对数据进行私钥的加密,而是先通过信息摘要算法对数据进行摘要,然后对摘要信息进行私钥的加密。
总结
非对称加密算法在加密和解密时使用两个不同的密钥,分别被称为公钥和私钥,只有同一个公钥私钥对才能正常加密和解密。
常见的非对称加密算法有:RSA算法、DSA。RSA算法主要进行对数据的公钥加密,DSA主要是对数据的签名验证。
边栏推荐
- R语言glm函数使用频数数据构建二分类logistic回归模型,分析的输入数据为频数数据、将频数数据转化为正常样本数据(拆分、裂变为每个频数对应的样本个数)
- Wallys/DR6018-S/ 802.11AX MU-MIMO OFDMA / 2* GE PORTS/WIFI 6e / BAND DUAL CONCURRENT
- Go写文件的权限 WriteFile(filename, data, 0644)?
- R语言使用MatchIt包进行倾向性匹配分析(设置匹配方法为nearest,匹配倾向性评分最近的对照组和病例组,1:1配比)、使用match.data函数构建匹配后的样本集合
- 618的省钱技术攻略 来啦 -体验场景 领取10元猫超卡!
- R language uses the polR function of mass package to build an ordered multi classification logistic regression model, and uses exp function and coef function to obtain the corresponding odds ratio of
- 简历的项目经历,测试人员书写要注意的几个问题
- kubernetes comfig subpath
- <Sicily>1000. 数字反转
- C#学习(高级课程)Day15——异常处理和命名空间
猜你喜欢

群晖万兆网络配置与测试

618的省钱技术攻略 来啦 -体验场景 领取10元猫超卡!

技术分享| WVP+ZLMediaKit实现摄像头GB28181推流播放

Lm05 former VIX (second generation product)

Network foundation and framework

When did the redo log under InnoDB in mysql start to perform check point disk dropping?

华三交换机配置SSH远程登录

Chinatown hiking: feel the strong Chinese flavor in the exotic New York

Dataset之GermanCreditData:GermanCreditData数据集的简介、下载、使用方法之详细攻略

First exposure! The only Alibaba cloud native security panorama behind the highest level in the whole domain
随机推荐
UI框架
AssetBundle resource management
Wallys/DR6018-S/ 802.11AX MU-MIMO OFDMA / 2* GE PORTS/WIFI 6e / BAND DUAL CONCURRENT
唐人街徒步:在异国情调的纽约感受浓厚的中式气息
The project experience of resume and several problems that testers should pay attention to in writing
SQL adds the problem of duplicate table records.
[system architecture] - five styles of software architecture
测试人员跳槽到新公司,工作怎样快速上手?
测试时间不够怎么办?
After the uncommitted transactions in the redo log buffer of MySQL InnoDB are persisted to the redo log, what happens if the transaction rollback occurs?
技术分享| WVP+ZLMediaKit实现摄像头GB28181推流播放
How long is the financial product? Is it better for novices to buy long-term or short-term?
企业该如何进行高效IT运维管理?
mysql innodb的redo log buffer中未commit的事务持久化到redo log后,万一事务rollback了怎么办?
一个 BUG 开发表示用户不会这样操作,无需修复,测试人员如何应对?
状态机框架
The filter function of dplyr package in R language filters the data rows containing the specified string in the specified data column of dataframe data based on the grepl function
How should enterprises conduct efficient IT operation and maintenance management?
Have you ever encountered incompatibility between flink1.15.0 and Flink CDC MySQL 2.2.1? f
R语言使用nnet包的multinom函数构建无序多分类logistic回归模型、使用回归系数及其标准误计算每个系数对应的Z统计量的值、使用pnorm函数计算Z统计量对应的p值判断变量的显著性