zoukankan      html  css  js  c++  java
  • RSA加密算法

    一、密码与加密

      传统密码加密算法是秘密的

      现代密码系统加密算法是公开的,密钥是秘密的

      • 对称加密,加密解密都是一个密钥
      • 非对称加密,加密解密是不同的密钥

    二、RSA加密算法

    1、RSA非对称加密系统

      公钥:用来加密,是公开的

      私钥:用来解密,是私有的

      

    2、RSA加密算法过程

    • 随机选取两个质数p和q
    • 计算n=pq
    • 选取一个与φ (n)互质的小奇数e,φ (n)=(p-1)(q-1)
    • 对模φ (n),计算e的乘法逆元d,即满足(e*d) mod φ (n) = 1
    • 公钥(e, n)    私钥(d, n)

      加密过程:c = (m^e) mod n

      解密过程:m = (c^d) mod n

    3、RSA加密算法测试

    In[1]:p = 53
    In[2]:q = 59
    In[3]:n = p * q
    In[4]:fai = (p-1)*(q-1)   # 欧拉函数
    In[5]:e = 3   # 与fai互质的小奇数
    In[6]:d = 2011  # 求得逆元d,满足(e*d)mod fai = 1
    In[7]:(e*d) % fai
    Out[9]: 1
    In[10]:print(e,n)   # 这两个组成公钥
    3 3127
    In[11]:print(d,n)  # 这两个组成私钥 
    2011 3127
    In[12]:m = 87   # 定义要传输的明文
    In[13]:c = (m**e) % n   # 加密得到密文
    In[14]:c
    Out[14]: 1833
    In[15]:(c**d) % n   # 解密得到明文
    Out[15]: 87
    

      

  • 相关阅读:
    ActiveRecord
    AOP
    Controller
    JFinalConfig
    Java I/O的工作机制2
    Java I/O的工作机制1
    MyEclipse 在build path时无效
    Android studio与夜神模拟器连接
    城市选择选择 / 三级联动
    drawer抽屉 / drawer的开关
  • 原文地址:https://www.cnblogs.com/xiugeng/p/9766220.html
Copyright © 2011-2022 走看看