最近在区块链技术与安全这门课上学了三节课的密码学,简直无语了…
自然语言处理课上,学了三节多的课的神经网络机器学习…
国科大的学科融合太真实了…
课程笔记就不写博客了,感觉就算写也会搞成PPT截图或者老师讲话记录那种,没意义

目录

  • RSA
    • 背景
    • 原理
      • 互质
      • 欧拉数
      • 欧几里得算法
      • 扩展欧几里得算法
    • 例子
  • DSA
    • 背景
    • 原理
    • 例子

RSA

背景

  RSA加密算法是一种非对称加密算法,是1977年由麻省理工学院的(Ron Rivest)、(Adi Shamir)和(Leonard Adleman)一起提出的。RSA就是他们三人姓氏开头字母拼在一起组成的。
  RSA算法是目前使用最为广泛的非对称加密算法,这得益于它的算法原理易于理解、实现相对简单(相对于椭圆曲线公钥密码算法)。不过我们国家的非对称加密算法国家标准并不是RSA,而是基于椭圆曲线密码学的SM2。
  RSA算法应用非常广泛,主要可以分为如下两类:一是小数据段的加密,尤其是秘钥的传输;而是数字签名,可以说目前绝大多数的数字签名算法都是使用的RSA算法。
  RSA算法的出现并不是为了替代对称加密算法,通常RSA非对称加密算法要比AES、DES等对称加密算法慢的多。这是因为RSA算法的计算过程涉及到了很多大数运算,非常的耗时。RSA算法通常和AES等对称加密算法一起使用,RSA算法加密算法在这里起到了加密对称秘钥的作用,大批量数据的加密实际上使用AES等对称加密算法加密的。
  RSA算法的原理是由一系列的数学原理和数论知识支撑的,其中主要是模运算、费马小定理、欧拉定理和欧拉函数。
  RSA算法的安全性依赖于大数的相乘在计算上是简单的,但是大数的因数分解是复杂的。具体的来讲就是计算两个大质数p和q的乘积是简单的,但是想从p和q的乘积分解出p和q是非常难的。

原理

互质

  互质是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者的特殊情形。
  互质,若N个整数的最大公因数是1,则称这N个整数互质。

欧拉数

  数学中,欧拉数是一组重要的常数,即函数sech t在t=0点的泰勒展开式的系数En。
  
  前几个欧拉数为:E0=1,E1=1,E2=5,E3=61,E4=1385,E5=50521,E6=2702765,……
  
  欧拉数与欧拉多项式En(x)有关,有时也称2^n*En(1/2)为欧拉数。

欧几里得算法

  欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。
  假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:
      1997 / 615 = 3 (余 152)
      615 / 152 = 4(余7)
      152 / 7 = 21(余5)
      7 / 5 = 1 (余2)
      5 / 2 = 2 (余1)
      2 / 1 = 2 (余0)
  至此,最大公约数为1
  以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。

/*
欧几里得算法:辗转求余
原理: gcd(a,b)=gcd(b,a mod b)
当b为0时,两数的最大公约数即为a
getchar()会接受前一个scanf的回车符
*/
#include<stdio.h>unsigned int MaxCommonFactor(int a,int b)
{if(b<=0)return a;return MaxCommonFactor(b,a%b);
}unsigned int Gcd(unsigned int M,unsigned int N)
{unsigned int Rem;while(N > 0){Rem = M % N;M = N;N = Rem;}return M;
}int main(void)
{int a,b;scanf("%d %d",&a,&b);printf("the greatest common factor of %d and %d is ",a,b);printf("%d\n",Gcd(a,b));printf("recursion:%d\n",MaxCommonFactor(a,b));return 0;
}
#include <iostream>
using namespace std;
int gcd(int a, int b)
{if (a < b) swap(a, b);return b == 0 ? a : gcd(b, a % b);
}
int x, y;
int main(){cin >> x >> y;cout << gcd(x, y);return 0;
}
int gcd(int m,int n)
{   if(n == 0){return m; }int r = m%n;return gcd(n,r);
}
function gcd(a, b) {if (a % b == 0) return b;return gcd(b, a % b);
}
def gcd(a, b):while a != 0:a, b = b % a, areturn b

扩展欧几里得算法

  扩展欧几里得算法可用于RSA加密等领域。
  扩展欧几里得算法是欧几里得算法(又叫辗转相除法)的扩展。除了计算a、b两个整数的最大公约数,此算法还能找到整数x、y(其中一个很可能是负数)。
  通常谈到最大公因子时, 我们都会提到一个非常基本的事实: 给予二整数 a 与 b, 必存在有整数 x 与 y 使得ax + by = gcd(a,b)。有两个数a,b,对它们进行辗转相除法,可得它们的最大公约数——这是众所周知的。然后,收集辗转相除法中产生的式子,倒回去,可以得到ax+by=gcd(a,b)的整数解。
  扩展欧几里得算法可以用来计算模反元素(也叫模逆元),而模反元素在RSA加密算法中有举足轻重的地位。

int gcdEx(int a,int b,int*x,int*y)
{if(b==0){*x=1,*y=0 ;return a ;}else {int r=gcdEx(b,a%b,x,y);/* r = GCD(a, b) = GCD(b, a%b) */int t=*x ;*x=*y ;*y=t-a/b**y ;return r ;}
}
def ext_euclid(a, b):     if b == 0:         return 1, 0, a     else:         x, y, q = ext_euclid(b, a % b) # q = gcd(a, b) = gcd(b, a%b)         x, y = y, (x - (a // b) * y)         return x, y, q

例子

  1、P = 11,q = 13 (随机选两个素数)
  2、N = 11*13 = 143 (公共模数)
  3、

RSA、DSA算法原理与举例相关推荐

  1. 带你彻底理解RSA算法原理

    1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法.在了解RSA算法之前,先熟悉下几个术语 根据密钥的使用方法,可以将密码分为对称密码和公钥密码 对称密码:加 ...

  2. RSA算法原理(简单易懂)

    1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法.在了解RSA算法之前,先熟悉下几个术语  根据密钥的使用方法,可以将密码分为对称密码和公钥密码  对称密码 ...

  3. 奇妙的安全旅行之DSA算法

    hi,大家好,我是开发者FTD.今天我们来介绍一下非对称加密算法中的DSA算法. DSA 算法简介 DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名 ...

  4. 多类线性分类器算法原理及代码实现 MATLAB

    多类线性分类器算法原理及代码实现 MATLAB 一.算法原理 下面举例说明为何蓝圈部分在case2中是确定的而在case1中不确定: 二.代码实现 1.HK函数 function [] = HK(w1 ...

  5. RSA算法原理——(2)RSA简介及基础数论知识

    上期为大家介绍了目前常见加密算法,相信阅读过的同学们对目前的加密算法也算是有了一个大概的了解.如果你对这些解密算法概念及特点还不是很清晰的话,昌昌非常推荐大家可以看看HTTPS的加密通信原理,因为HT ...

  6. RSA算法原理简介,非对称加密,公开密钥算法(易懂篇)

    RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它.但是有不少新来的同事对它不太了解,恰好看到一本书中作者用实例对它进行了简化而生动的描述,使得高深的数学理论能够被容易地理解.我们经 ...

  7. RSA算法与DSA算法的区别

    当我们在Linux/Unix系统(windows下需用git的bash工具)中通过生成ssh认证密钥时,你要(用-t type来)选择创建一对RSA或者DSA密钥.这两者之间有什么区别?是什么原因让人 ...

  8. RSA算法原理详解(简单易懂)

    本文主要是简单高效地讲解RSA算法的基本数学原理以及加解密的步骤,算法背景以及设计到的数学证明省略.本文主要参考wikipedia和博文<非对称加密算法–RSA加密原理>. 非对称公钥加密 ...

  9. RSA算法加密解密举例

    RSA算法加密解密举例 使用如下数字字母对照表: 明文M="its all greek to me" ,p=47,q=59,e=17,求出其密文以及给出RSA 算法加/解密过程.( ...

  10. android支付宝rsa加密算法,支付宝支付流程与RSA算法原理

    RSA加密算法的原理 支付宝的三种支付流程 1.所有的支付逻辑处理,全在服务器完成,现在被淘汰了 原理就是电商App吧所有的信息提交给电商服务器,然后又电商服务器与支付宝服务器进行交互 2.所有的支付 ...

最新文章

  1. RunTime运行时在iOS中的应用之UITextField占位符placeholder
  2. awk使用shell中的变量
  3. docker挂载的目录无法读写
  4. [渝粤教育] 西南科技大学 网络程序设计 在线考试复习资料
  5. transition属性详细讲解
  6. SSH实战项目——在线商品拍卖网
  7. thinkphp框架的优缺点
  8. Hide()方法不生效
  9. mysql 5.0卸载_卸载MySQL 5.0
  10. 回顾备忘—Android系统hal层相关系统粗概
  11. 如何使用浏览器的网页全文翻译工具
  12. 软件项目风险评估报告
  13. 使用Sequelize实现文章和评论的一对多关系并实现评论的按时间排序
  14. Outlook设置新folder location后无法显示default view的解决方案
  15. elementui组件中,树形组件的使用
  16. oracle sample 慢,【案例】Oracle优化 latch free问题Result Cache:RC Latch引起数据库缓慢...
  17. 手机联系人头像包_动漫壁纸 | 星游记动漫手机全面屏壁纸
  18. 最大公约数gcd函数简介
  19. 如何通过jsoup网络爬虫工具爬取网页数据,并通过jxl工具导出到excel
  20. 云服务器、个人服务器、软路由、NAS的奇特用法(一)you-get下载视频 以b站为例(可支持网易云音乐、acfun、土豆、优酷等详情见附录)

热门文章

  1. Codeforces Round #155 (Div. 2) C YY题目
  2. SQL问题记录——Unable to connect SqlServer Oledb ...
  3. 为什么RegisterClientScriptResource方法在自定义控件中的RenderContents期间不起作用?...
  4. 群体智能之粒子群优化(PSO)
  5. 【VS2010学习笔记】【错误调试】error LNK1123:转换到COFF期间失败;文件无效或者损坏
  6. Rabin-Karp算法详解和实现(python)
  7. day1--numpy
  8. 计算机网络实验视频word,(完整word版)《计算机网络与通信》实验.docx
  9. go语言学习---数据类型、运算符、表达式
  10. jquey控制元素滚动条,外层div滚动,内层顶部div固定不动