加密={对称加密,非对称加密}

对称加密的效率高于非对称加密。常用非对称加密算法协商对称加密的密钥,便于用对称加密传输数据。

非对称加密算法有很多种实现算法,RSA是其中一种(三个人姓氏首字母的缩写,其中R和S想算不可逆公式one-way function,数学家A寻公式的不足)。

非对称加密算法步骤:生成密钥对,分发公钥,加密,解密。用途:加密传输,数字签名。

RSA是基于离散对数的实现,设计和证明移步维基百科RSA。以下是我看了百科后自己用Python3尝试的代码清单。

import randomclass RSA:def is_prime(self, n):'''primality test'''if n <= 3:return n > 1elif (n % 2 == 0) or (n % 3 == 0):return Falsei = 5while i * i <= n:if (n % i == 0) or (n % (i + 2) == 0):return Falsei += 6return Truedef gcd(self, a, b):'''返回a、b的最大公约数'''return a if b == 0 else self.gcd(b, a % b)def lcm(self, a, b):'''返回a、b的最小公倍数'''return a // self.gcd(a, b) * bdef ex_gcd(self, a, b, d, x, y):'''函数结束时,(x + b) % b为 (a % b)的乘法逆元'''if b == 0:d[0], x[0], y[0] = a, 1, 0else:self.ex_gcd(b, a % b, d, y, x)y[0] -= a // b * x[0]def quick_power(self, a, b, mod):res = 1while b != 0:if (b & 1) == 1:res = (res * a) % mod  a = a * a % modb >>= 1return res       def generate(self):'''Generates a k-bit RSA public/private pair@param @returns 返回密钥对'''p, q = 10000079, 10000943  # p、q互质,他来决定了模数n的大小,消息可被转化为不大于n的数加密# 其实可以给函数加一个参数,来约束p、q的大小lambdan = self.lcm(p - 1, q - 1)e = 0while not self.is_prime(e):e = random.randint(2, lambdan - 1)d = [0]self.ex_gcd(e, lambdan, [0], d, [0]) d = d[0] % lambdanreturn {'n': p * q,  # public key (part I)'e': e,      # public key (part II)'d': d,      # private key} def encrypt(self, m, e, n):'''明文m,指数e,模数n '''c = self.quick_power(m, e, n)return cdef dencypt(self, c, d, n):m = self.quick_power(c, d, n)return mif __name__ == "__main__":alice = RSA()bob = RSA()keys = alice.generate()msg = 878089'''bob使用alice的公钥加秘明文,alice收到密文后使用私钥解密'''c = bob.encrypt(m=msg, e=keys['e'], n=keys['n'])m = alice.dencypt(c, d=keys['d'], n=keys['n'])assert msg == mprint(msg, m)

既来之,则安之。要开学选课了,我估计的得主修网络空间安全了,将来从事运维,无缘开发岗(还是会偷偷学Java的)

RSA算法实现(Python版)相关推荐

  1. RSA算法的Python实现(模幂运算——原始算法)

    参考文章: RSA的基本原理就不做赘述,详细的可以去查一查,主要介绍使用python来计算RSA算法 设p.q为质数 n = p*q fn = (p-1)*(q-1) 要满足: 1 < e &l ...

  2. 各省新高考等级赋分算法实现——python版

    各省新高考等级赋分算法实现--python版 一.前言 新高考从2014年启动,目前已经有14个地区(省.市)实行了新高考改革分别是:浙江.上海.北京.山东.天津.海南.湖南.广东.江苏.重庆.河北. ...

  3. GMM算法(python版)

    原 [machine learning]GMM算法(Python版) 一.GMM模型 事实上,GMM 和 k-means 很像,不过 GMM 是学习出一些概率密度函数来(所以 GMM 除了用在 clu ...

  4. python数据结构与算法分析_数据结构与算法(Python版)

    为什么研究数据结构与算法 本周带大家进入Python版数据结构与算法的学习.想必大家都听过"算法"一词,算法的学习对编程者来说是至关重要的.首先我们先了解一下为什么要研究数据结构与 ...

  5. python中用函数设计栈的括号匹配问题_数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题...

    算法 数据结构 数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题 在平时写程序当中,我们会经常遇到程序当中括号的匹配问题,也就是在程序当中左括号的数量和右括号的数量必须相等.如 ...

  6. 太强了,手撸一款导弹跟踪算法(Python版)

    作者:半壶砂 https://www.cnblogs.com/halfsand/p/7976636.html 这里涉及拦截导弹的自动跟踪.最近,看到了一个挺有趣的自动跟踪算法,一个Python的简单模 ...

  7. 归并排序验证性实验_攻略 | 10 大经典排序算法(Python 版)

    全国信息学大神和家长在这里 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能 ...

  8. 图解leetcode初级算法python版 pdf_图解LeetCode初级算法(Python版)

    第1章 浅谈算法 1.1 算法概述 1.2 度量算法 1.2.1 时间复杂度 1.2.2 空间复杂度 1.3 Python&Pythonic 第2章 基础算法之排序 2.1 冒泡排序 2.1. ...

  9. leetcode中文版python,图解LeetCode初级算法(Python版)

    第1章 浅谈算法 1.1 算法概述 1.2 度量算法 1.2.1 时间复杂度 1.2.2 空间复杂度 1.3 Python&Pythonic 第2章 基础算法之排序 2.1 冒泡排序 2.1. ...

  10. python dfs算法_LeetCode | 一文帮你搞定BFS、DFS算法(python版)

    模板方法 使用BFS,DFS的题目,在leetcode上一般标记为medium或者hard.但从思维逻辑上看,其难度定义偏高.可能从代码量来看,写一道BFS或者DFS的篇幅比其他类型的题目要多. BF ...

最新文章

  1. CSS之布局(盒子的水平布局)
  2. CSS布局基础之二认识Viewport
  3. x5675相当于e5_如何辨别电商电脑主机是否二手翻新硬件?揭秘i7级E5电脑主机猫腻...
  4. 也说说“从Adapter模式到Decorator模式”
  5. k8s部署postgresql(含postgis插件)
  6. mysql取得列类型_Mysql列类型
  7. @RequestParam的作用
  8. 数据结构Java版之排序算法(二)
  9. Mongodb 集群实战
  10. 使用Java实现面向对象编程(1)
  11. Linux之python3编译安装
  12. java 保留字符串数字的位数,不够前面补0
  13. 九宫格拼图C++源码(以面向对象的思想实现,可以输入8及8以下的任意行列数的九宫格拼图游戏)
  14. c# 阿拉伯数字转成中文
  15. linux下解压war格式的包
  16. zend抽象语法树AST流程解析
  17. 关于Mac升级系统后,出现 xcrun: error: invalid active developer path 问题的解决方案【已解决】
  18. centos 7 安装时忘记打开网络导致开机网络无法自启动解决办法
  19. 模拟退火算法全解(Simulated Annealing)文末有源码
  20. 【龙印】用龙芯1c实现3D打印机的总体思路

热门文章

  1. python实例属性
  2. Facade(外观模式) 结构型
  3. 电商 竞品分析_电商平台竞品分析报告.docx
  4. 谭浩强版c语言笔记(1)
  5. 【matlab教程】02、拼接矩阵或向量
  6. 南科大学生对网络授课的反馈
  7. 2022年顶会accepted papers list
  8. vim 复制、删除多行
  9. dz.27z.co index.php,dc vip中心 专业版v2.2.1 discuz插件 dzvip插件 vip会员插件 积分充值插件...
  10. Latex 自用中文模板