RSA、DSA算法原理与举例

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

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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值