zoukankan      html  css  js  c++  java
  • RSA加密原理简述

    1.了解对称加密和非对称加密

    1.1什么是对称加密?

    加密和解密使用同样规则的方法,被称为“对称加密算法”。

    比如说:甲方选择某一种加密规则,对信息进行加密。乙方使用同一种规则,对信息进行解密。

    特点:

    理论上,只要加解密“规则”(即“密钥”)足够复杂,这种方式也可安全的传递信息。

    但这种方法最大的弱点就是,密钥在传递的过程中易被泄露。

    常见的对称加密算法有:DES/3DES/AES

    1.2 什么是非对称加密?

    加解密信息的过程中,能让加密密钥(公钥)与解密密钥(私钥)不同,这种新的加密模式被称为“非对称加密算法”,通常个人保存私钥,公钥是公开的。

    2.RSA算法介绍

    2.1 什么是RSA算法?

    RSA是目前最有影响力的公钥加密算法,算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。

    算法由来:

    1977年,三位数学家Rivest、Shamir和Adleman设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字首字母命名,叫做RSA算法。RSA算法非常可靠,密钥越长,它就越难破解。

    2.2 相关数学理论

    2.2.1 什么是“素数”?

    素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。例如,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。素数也称为“质数”。

    2.2.2 什么是“互质数”(或“互素数”)?

    互质数是这样定义的:“公约数只有1的两个数,叫做互质数。”这里所说的“两个数”是指自然数。

    判别方法主要有以下几种(不限于此)

    (1)两个质数一定是互质数。例如,2与7、13与19。

    (2)一个质数如果不能整除另一个合数,这两个数为互质数。例如,3与10、5与 26。

    (3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。如1和9908。

    (4)相邻的两个自然数是互质数。如 15与 16。

    (5)相邻的两个奇数是互质数。如 49与 51。

    (6)大数是质数的两个数是互质数。如97与88。

    (7)小数是质数,大数不是小数的倍数的两个数是互质数。如 7和 16。

    (8)两个数都是合数(二数差又较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。如357与715,357=3×7×17,而3、7和17都不是715的约数,这两个数为互质数。

    2.2.3 什么是模指数运算?

      指数运算谁都懂,不必说了,先说说模运算。模运算是整数运算,有一个整数m,以n为模做模运算,即m mod n。怎样做呢?让m去被n整除,只取所得的余数作为结果,就叫做模运算。例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。

    模指数运算就是先做指数运算,取其结果再做模运算。

    2.3 RSA算法实现过程

    1. 随意选择两个大的质数p和q,p不等于q,计算N=pq。

    2. 根据欧拉函数,不大于N且与N互质的整数個数為(p-1)(q-1)。

    3. 选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)。

    4. 用以下这个公式计算d:d× e ≡ 1 (mod (p-1)(q-1))。

    5. 将p和q的记录销毁。

    在以上的内容中,(N,e)是公钥,(N,d)是私钥。

  • 相关阅读:
    javascript设计模式小记
    静态iframe异步加载
    博客搬家分割线
    大数据学习之MapReduce篇
    IDEA 创建javaWeb以及Servlet
    数组定义 二维数组 数组遍历 查找
    201720181 JAVA实验站 第二周作业
    201720181 JAVA实验站 第三周作业
    201720181 团队名称 第一周 作业
    C#语言编写的基于directshow的音视频格式转换
  • 原文地址:https://www.cnblogs.com/duyao/p/14075031.html
Copyright © 2011-2022 走看看