几种主要的公钥加密算法
RSA加密算法
一、RSA算法是什么?
RSA基于数论的欧拉定理,是第一个安全、实用的公钥加密算法,已成为国际标准。
二、秘钥生成步骤
- 选取两个安全的大素数p、q(大于1024比特)
- 计算n = p * q , φ(n) = (p-1) (q-1),其中φ(n)为n的欧拉函数
- 随机选取整数e,满足1 < e < φ(n) , gcd(e,φ(n)) = 1即 e与 φ(n)互素
- 计算私钥d,满足d * e = 1(mod φ(n)),即 d == e^(-1)(mod φ(n)),则e和n是公钥,d是私钥
三、重要公式
加密公式:密文 = 明文^E mod N(明文需要分组)
解密公式:明文 = 密文^D mod N
ElGamal加密算法
一、ElGamal算法是什么?
ElGamal是基于有限域上离散对数的公钥加密体制,该体制既可以用来加密也可以用做数字签名
二、秘钥生成步骤
- 选取大素数 p ,生成 Zp*的一个生成元 g
- 选一个随机数 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)的椭圆曲线的点集构成群,并基于离散对数的公钥加密体制。
二、秘钥生成步骤
- 选择一个椭圆曲线 E:y^2 = x^3 + a*x + b( mod p),构造一个椭圆群 Ep(a,b)
- 在Ep(a,b)中挑选生成元点 G =(x0,y0),并且 n * G = O,O为无穷远点,n是一个大素数
- 选择一个小于 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 | |
数论基础 | 欧拉定理 | 离散对数 | 离散对数 |
安全性基础 |
整数分解问 题的困难性 |
有限域上得离散 对数问题的难解性 |
有限域上得离散 对数问题的难解性 |
安全秘钥长度 | 1024位 | 1024位 | 160位 |
用途 | 加密、数字签名 | 加密、数字签名 | 加密、数字签名 |
专利 | 是 | 否 | 否 |
几种主要的公钥加密算法相关推荐
- 公钥密码体制及RSA公钥加密算法(上)
一.公钥密码体制 (1)公钥(非对称)密码概述: 优点:免去密钥分发,密钥管理简单 (2)公钥加密的设计原则: 已知公私钥,进行加密解密是简单容易的 单向函数:一个函数f,对于定义域内的任意x,计算f ...
- 一种增强的md5加密算法
一种增强的md5加密算法 2008-06-04 16:26:48 标签:加密算法 md5 一种 增强的 [推送到技术圈] 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一种增强的md5加密算法 ...
- 信息安全实验四:RSA公钥加密算法 2019.04.28
实验四:RSA公钥加密算法 一.实验目的 理解.掌握RAS公钥加密算法的基本过程. 二.实验内容 熟悉MPIR大整数运算库函数的调用. 利用MPIR大整数运算库函数,实现RSA公钥加密算法.要求:1) ...
- 两个基于二次剩余的公钥加密算法
两个基于二次剩余的公钥加密算法 两个基于二次剩余的公钥加密算法 Rabin加密算法 GM加密算法 两个基于二次剩余的公钥加密算法 二次剩余问题:在不知道n的分解情况下,一般性地判断一个整数a是否为模n ...
- 公钥加密算法——RSA算法
公钥加密算法--RSA算法 一.加密解密过程 二.算法原理 1.公钥密钥的选取 举个例子 2.私钥求解 3.举个例子 三.分析 附:视频链接 在实际应用场景中,由于效率较低,所以通常在通信建立连接 ...
- 公钥密码体制及RSA公钥加密算法(下)
一.RSA公钥加密算法安全性 1.RSA安全性假定: 基于分解大整数的困难性假定 如果RSA的模数n被成功的分解成p*q,则立刻可以得到对应的φ(n)=(p-1)*(q-1),从而可以确定e模φ(n) ...
- # RSA 公钥加密算法
Blai 终端之间信息传递安全性的保证始终是业务的刚性需求.不同的加密算法针对不同的业务需求, 因为公司是金融公司性质,又不是传统的金融公司(PS:牵扯到数字货币.常听说的比如:比特币),加密算法这块 ...
- 密码学之背包加密系统(Merkle–Hellman公钥加密算法)原理
背包加密系统 背包问题 假定一个背包可以承重 W,现在有 n 个物品,其重量分别为a1,a2,a3,...,ana_1,a_2,a_3,...,a_na1,a2,a3,...,an, 问装哪些 ...
- 一种保留格式的加密算法FPE
一.背景 在实际应用中,对数据库中的信用卡号.身份证号等敏感数据进行加密是非要有必要的,然而使用传统的分组密码通常会扩展数据,使数据长度和类型发送变化,需要修改数据库结构或应用程序来适应这些变化,成本 ...
最新文章
- mixamo网站FBX模型带骨骼绑定动作库
- CaDDN:基于单目的3D目标检测新方法(CVPR2021)
- [洛谷P4726]【模板】多项式指数函数
- OpenCV中VideoWriter输出视频文件为空或6KB解决方法(java)
- cdev linux_Linux设备管理(二)_从cdev_add说起
- 三、python+selenium
- hdu 5017 Ellipsoid(西安网络赛 1011)
- c语言循环结构菱形九九乘法表,C语言基础用基本的循环语句打印实心和空心菱形、九九乘法表 ....
- python3 下载文件-使用Python 3从网上下载文件
- Cocos2d-x学习笔记(十一)动作
- Spring boot 2.x + Thymeleaf 公共部分抽取
- 医院叫号排队系统 php,医院排队叫号系统软件介绍
- Linux文件与管理(还是多记)
- BZOJ——2563: 阿狸和桃子的游戏
- Android Smart Image View
- thinkbook15快捷键
- Hi3518E音频部分设计
- 车间ERP管理系统软件哪家好(上)
- C语言如何实现辗转相除法
- XBYTE[0X7FFF]是什么意思
热门文章
- 最近特别火的给Emoji表情加小辫子,双端通用方法来了
- Java集合:Set集合的使用
- c++优雅地删除数组中某元素
- getrand在c语言中的作用,c语言 rand 的用法
- 详解10M/100M/1000M以太网接口物理层一致性测试
- 前目的地罗伯森是谁_前目的地 - 隐藏的时间线
- 使用ipset设置iptables(黑/白)名单
- [scRNA-seq]doublets检测——DoubletFinder scrublet (下)
- 一款可以完美替代浏览器自带起始页的新标签页插件:Wetab
- mysql crud操作_c#操作mysql数据库CRUD操作