RSA加密算法

一、RSA算法是什么?

RSA基于数论的欧拉定理,是第一个安全、实用的公钥加密算法,已成为国际标准。

二、秘钥生成步骤

  1. 选取两个安全的大素数p、q(大于1024比特)
  2. 计算n = p * q , φ(n) = (p-1) (q-1),其中φ(n)为n的欧拉函数
  3. 随机选取整数e,满足1 < e < φ(n) , gcd(e,φ(n)) = 1即 e与 φ(n)互素
  4. 计算私钥d,满足d * e = 1(mod φ(n)),即 d == e^(-1)(mod φ(n)),则e和n是公钥,d是私钥

三、重要公式

加密公式:密文 = 明文^E mod N(明文需要分组)

解密公式:明文 = 密文^D mod N


ElGamal加密算法

一、ElGamal算法是什么?

ElGamal是基于有限域上离散对数的公钥加密体制,该体制既可以用来加密也可以用做数字签名

二、秘钥生成步骤

  1. 选取大素数 p ,生成 Zp*的一个生成元 g
  2. 选一个随机数 x,1<x<p-1, y == g^x (mod p), 公钥为(y,g,p) 私钥为 x

三、重要公式

加密步骤:m分为 m1..mi...mt块,分组长度 L<log2 p,ri为第 mi对应的随机整数 ,                                           ci = g^ri (mod p)  ci'  = mi * y^ri (mod p)  c = (c1,c1')(c2,c2')...(ct,ct'),

解密步骤:mi = (ci'/ci^x) (mod p)  m = m1m2...mt         


                                   

椭圆曲线(ECC)加密算法

一、椭圆曲线(ECC)算法是什么?

椭圆曲线(ECC)是基于有限域GF(p)的椭圆曲线的点集构成群,并基于离散对数的公钥加密体制。

二、秘钥生成步骤

  1. 选择一个椭圆曲线 E:y^2 = x^3 + a*x + b( mod p),构造一个椭圆群 Ep(a,b)
  2. 在Ep(a,b)中挑选生成元点 G =(x0,y0),并且 n * G = O,O为无穷远点,n是一个大素数
  3. 选择一个小于 n 的整数 nB作为私钥,然后公钥 PB = nB * G,则 B的公钥为(E,n,G,PB)私钥为 nB

三、重要公式

加密步骤:在椭圆群 Ep(a,b)中选择一个点 Pt=(Xt,Yt), 再选取 k,计算p1 = (x1,y1) = kG,p2 =                   (x2,y2) = kPB ,  C = mXt + Yt ,Cm={kG,Pt+KPB,C}

解密步骤:利用私钥 nB计算 Pt + kPB - nB * (k*G) = pt +k * (nB * G) - nB * (k*G) = Pt                                      m = ( C-Yt ) / Xt


三种算法的比较                                                                                           

RSA、EiGamal、ECC比较
RSA EiGamal ECC
数论基础 欧拉定理 离散对数 离散对数
安全性基础

整数分解问

题的困难性

有限域上得离散

对数问题的难解性

有限域上得离散

对数问题的难解性

安全秘钥长度 1024位 1024位 160位
用途 加密、数字签名 加密、数字签名 加密、数字签名
专利

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

几种主要的公钥加密算法相关推荐

  1. 公钥密码体制及RSA公钥加密算法(上)

    一.公钥密码体制 (1)公钥(非对称)密码概述: 优点:免去密钥分发,密钥管理简单 (2)公钥加密的设计原则: 已知公私钥,进行加密解密是简单容易的 单向函数:一个函数f,对于定义域内的任意x,计算f ...

  2. 一种增强的md5加密算法

    一种增强的md5加密算法 2008-06-04 16:26:48 标签:加密算法 md5 一种 增强的 [推送到技术圈] 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一种增强的md5加密算法 ...

  3. 信息安全实验四:RSA公钥加密算法 2019.04.28

    实验四:RSA公钥加密算法 一.实验目的 理解.掌握RAS公钥加密算法的基本过程. 二.实验内容 熟悉MPIR大整数运算库函数的调用. 利用MPIR大整数运算库函数,实现RSA公钥加密算法.要求:1) ...

  4. 两个基于二次剩余的公钥加密算法

    两个基于二次剩余的公钥加密算法 两个基于二次剩余的公钥加密算法 Rabin加密算法 GM加密算法 两个基于二次剩余的公钥加密算法 二次剩余问题:在不知道n的分解情况下,一般性地判断一个整数a是否为模n ...

  5. 公钥加密算法——RSA算法

    公钥加密算法--RSA算法 一.加密解密过程 二.算法原理 1.公钥密钥的选取 举个例子 2.私钥求解 3.举个例子 三.分析 附:视频链接   在实际应用场景中,由于效率较低,所以通常在通信建立连接 ...

  6. 公钥密码体制及RSA公钥加密算法(下)

    一.RSA公钥加密算法安全性 1.RSA安全性假定: 基于分解大整数的困难性假定 如果RSA的模数n被成功的分解成p*q,则立刻可以得到对应的φ(n)=(p-1)*(q-1),从而可以确定e模φ(n) ...

  7. # RSA 公钥加密算法

    Blai 终端之间信息传递安全性的保证始终是业务的刚性需求.不同的加密算法针对不同的业务需求, 因为公司是金融公司性质,又不是传统的金融公司(PS:牵扯到数字货币.常听说的比如:比特币),加密算法这块 ...

  8. 密码学之背包加密系统(Merkle–Hellman公钥加密算法)原理

    背包加密系统 背包问题 假定一个背包可以承重 W,现在有 n 个物品,其重量分别为a1,a2,a3,...,ana_1,a_2,a_3,...,a_na1​,a2​,a3​,...,an​, 问装哪些 ...

  9. 一种保留格式的加密算法FPE

    一.背景 在实际应用中,对数据库中的信用卡号.身份证号等敏感数据进行加密是非要有必要的,然而使用传统的分组密码通常会扩展数据,使数据长度和类型发送变化,需要修改数据库结构或应用程序来适应这些变化,成本 ...

最新文章

  1. mixamo网站FBX模型带骨骼绑定动作库
  2. CaDDN:基于单目的3D目标检测新方法(CVPR2021)
  3. [洛谷P4726]【模板】多项式指数函数
  4. OpenCV中VideoWriter输出视频文件为空或6KB解决方法(java)
  5. cdev linux_Linux设备管理(二)_从cdev_add说起
  6. 三、python+selenium
  7. hdu 5017 Ellipsoid(西安网络赛 1011)
  8. c语言循环结构菱形九九乘法表,C语言基础用基本的循环语句打印实心和空心菱形、九九乘法表 ....
  9. python3 下载文件-使用Python 3从网上下载文件
  10. Cocos2d-x学习笔记(十一)动作
  11. Spring boot 2.x + Thymeleaf 公共部分抽取
  12. 医院叫号排队系统 php,医院排队叫号系统软件介绍
  13. Linux文件与管理(还是多记)
  14. BZOJ——2563: 阿狸和桃子的游戏
  15. Android Smart Image View
  16. thinkbook15快捷键
  17. Hi3518E音频部分设计
  18. 车间ERP管理系统软件哪家好(上)
  19. C语言如何实现辗转相除法
  20. XBYTE[0X7FFF]是什么意思

热门文章

  1. 最近特别火的给Emoji表情加小辫子,双端通用方法来了
  2. Java集合:Set集合的使用
  3. c++优雅地删除数组中某元素
  4. getrand在c语言中的作用,c语言 rand 的用法
  5. 详解10M/100M/1000M以太网接口物理层一致性测试
  6. 前目的地罗伯森是谁_前目的地 - 隐藏的时间线
  7. 使用ipset设置iptables(黑/白)名单
  8. [scRNA-seq]doublets检测——DoubletFinder scrublet (下)
  9. 一款可以完美替代浏览器自带起始页的新标签页插件:Wetab
  10. mysql crud操作_c#操作mysql数据库CRUD操作