【密码学】ElGamal加密算法原理 以及 例题讲解

news2025/6/9 13:37:47

目录

  • 前言
  • 1. 原理
  • 2. 例题
    • 2.1 例题一
    • 2.2 例题二

前言

具体的性质:

  • 非对称加密算法
  • 应用于一些技术标准中,如数字签名标准(DSS)、S/MIME 电子邮件标准
  • 算法定义在任何循环群 G 上,安全性取决于 G 上的离散对数难题

1. 原理

主要由三部分组成:密钥生成、加密和解密

可以用这幅图讲解:(用公钥加密,私钥解密):
在这里插入图片描述

该算法与Difffie-Hellman一样,ElGamal的系统用户共同选择一个素数 q,a 是 q 的素根。

一、密钥生成:(用户A)

  1. 随机生成 整数X (1< X < q - 1)
  2. 计算 公钥Y = a X mod q

可以得到私钥 X,公钥 {q,a,Y}

二、加密:(用户B通过A的公开密钥进行加密)

  1. 发送信息为 整数 M(1 ≤ \leq X ≤ \leq q - 1),以分组密码序列的方式来发送信息,其中每个分块的长度不小于整数 q
  2. 取任意整数 小写k(1 ≤ \leq k ≤ \leq q - 1)
  3. 取一次密钥 大写K :K = ( Y ) k mod q
  4. 整数M 加密成 明文对(C1,C2),C1 = ak mod q ,C2 = KM mod q

三、解密:(用户A恢复密文)

  1. 计算密钥 大写K :K = (C1)X mod q
  2. 计算 整数M,M = (C2K-1) mod q

至于解密的式子 是这样生成:

式子一:
K = ( Y ) k mod q
K = ( a X mod q ) k mod q
K = a kX mod q
K = (C1)X mod q


式子二:
因为 C2 = KM mod q
所以 (C2K-1) mod q = KMK-1 mod q = M mod q = M

2. 例题

2.1 例题一

题目: 已知素数q为19,素根有 {2,3,10,13,14,15} ,此处 选择a = 10。

答案:

一、秘钥生成:(用户A)

  1. 选择X = 5
  2. 计算 Y = a X mod q = 10 5 mod 19 = 3

A用户的 私钥 为5, 公钥为 {q,a,Y} = {19,10,3}

二、加密:(用户B通过A的公开密钥进行加密)

  1. 发送消息17,想选择 小写k = 6
  2. 计算 大写K :K = ( Y ) k mod q = 36 mod 19 = 729 mod 19 = 7
  3. 密文 C1 = ak mod q = 106 mod 1 = 11 ,C2 = KM mod q = 7 x 17 mod 19 = 119 mod 19 =5
  4. 发送密文 M = (11,5)

三、解密:(用户A恢复密文)

  1. 计算 大写K ,K = (C1)X mod q = 115 mod 19 = 7
  2. K-1 为 7-1 mod 19 = 11
  3. 最终 M = (C2K-1) mod q = 5 x 11 mod 19 = 55 mod 19 = 17

2.2 例题二

题目: 素数 37,取素数根,最小为2

答案:

过程与上面类似,此处讲解下具体步骤

一、秘钥生成:(用户A)
随机取一个数,取X 为 5,Y = 2 5 mod 37 = 32

二、加密:(用户B通过A的公开密钥进行加密)
发送29消息,取 小写k 为 7
计算出的 大写K 为 19
C1 = 17,C2 = 33
M = (17,33)

三、解密:(用户A恢复密文)
大写K为 19
M 为 29

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

元宇宙地产暴跌,林俊杰亏麻了

文/章鱼哥出品/陀螺财经随着元宇宙的兴起&#xff0c;元宇宙地产曾一度被寄予厚望&#xff0c;成为各大投资者追捧的对象。然而&#xff0c;最近的一次元宇宙地产价值暴跌再次提醒我们&#xff0c;高收益背后可能伴随着高风险。根据元宇宙分析平台WeMeta的数据显示&#xff0c;…

400以内的蓝牙耳机哪款好?400以内蓝牙耳机排行榜

谈起TWS&#xff0c;无论是传统的音频厂商还是手机厂商&#xff0c;都是其不可或缺的重要产品线&#xff0c;现在很多许多蓝牙耳机都不是千篇一律得形状&#xff0c;市场也鲜有商家在外观上下功夫&#xff0c;下面分享几款400元以内&#xff0c;内外兼具的耳机品牌。 一、南卡…

Spring boot+Vue3博客平台:修改密码与找回密码的设计与实现

修改密码与找回密码功能的设计与实现涉及到前后端的配合。本文将详细介绍如何通过设计思路、技术实现和代码示例实现这两个功能。 一、修改密码功能 设计思路 在设计修改密码功能时&#xff0c;需要注意以下几点&#xff1a; 用户输入的当前密码需要正确新密码需要满足一定的…

查询优化器:选择最优的查询路径

当我们通过解析器理解了SQL语句要干什么之后&#xff0c;接着会找查询优化器&#xff08;Optimizer&#xff09;来选择一个最优的查询路径。 可能有同学这里就不太理解什么是最优的查询路径了&#xff0c;这个看起来确实很抽象&#xff0c;当然&#xff0c;这个查询优化器的工…

总结819

学习目标&#xff1a; 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 第二周&#xff1a; 学习内容&#xff1a; 暴力英语&#xff1a;早上背诵《think different》记150词&#xff0c;默写了两篇文章&#xff0c…

BUUCTF-warmup_csaw_2016

1.checksec/file 64位的linux文件 2.ida 找到主函数 发现致命函数 get() 因为get可以无限输入 看看有没有什么函数我们可以返回的 双击进入sub_40060d 直接发现这个函数是取flag的 所以我们开始看这个函数的地址 所以函数地址是 0x40060d 我们看看get什么时候开始的 发现g…

Stable Diffusion复现——基于 Amazon SageMaker 搭建文本生成图像模型

众所周知&#xff0c;Stable Diffusion扩散模型的训练和推理非常消耗显卡资源&#xff0c;我之前也是因为资源原因一直没有复现成功。而最近我在网上搜索发现&#xff0c;亚马逊云科技最近推出了一个【云上探索实验室】刚好有复现Stable Diffusion的活动&#xff0c;其使用亚马…

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 1、fixture的autous…

jQuery+AJAX技术(简单的用户注册功能)

目录1、jQuery是什么&#xff1f;2、AJAX是什么&#xff1f;3、jQuery与AJAX的关系&#xff1f;使用jQuery实现AJAX示例&#xff1a;4、jQueryAJAX技术实现用户注册验证功能。1、jQuery是什么&#xff1f; jQuery 是一个快速&#xff0c;小型且功能丰富的JavaScript库。它使 诸…

gradle编译项目报错Execution failed for task ‘:bootJar‘,‘:mainClass‘,‘:compileJava‘.

目录1.问题2.问题查找3.更多1.问题 idea导入Gradle管理的SpeingBoot多模块项目&#xff0c;依赖下载不下来&#xff0c;执行编译报错 报错信息&#xff1a; 2.问题查找 首先怀疑是不是idea的版本与gradle版本冲突&#xff0c;我用的是idea2022.3.3&#xff0c;gradle是7.5.…

做一个内心强大的人

想想类似如下这种心灵鸡汤&#xff0c;本不太愿意在这个平台发布&#xff0c;但是偶尔喝点又何尝不可&#xff01; 语录摘抄/分享&#xff1a; 1、你开始炫耀自己&#xff0c;往往都是灾难的开始&#xff0c;就像老子在《道德经》里写到: 光而不耀&#xff0c;静水流深。 2、…

汽车电子相关术语介绍

一、相关术语介绍 1、汽车OTA 全称“Over-The-Air technology ”&#xff0c;即空中下载技术&#xff0c;通过移动通信的接口实现对软件进行远程管理&#xff0c;传统的做法到4S店通过整车OBD对相应的ECU进行软件升级。OTA技术最早2000年出现在日本&#xff0c;目前通过OTA方式…

HashMap源码解析超详细

HashMap源码详解1、概述2、源码解析1.HashMap底层存储结构问题一: 为什么直接就用数组呢&#xff1f;问题二&#xff1a;什么是红黑树呢&#xff1f;问题三&#xff1a;为什么不一下子把整个链表变为红黑树呢&#xff1f;2.HashMap的重要成员变量3.构造方法解析4.Put方法解析取…

渗透测试工具库-收藏版

1.前言 浩二一开始做渗透测试的时候收集超多的资料和工具&#xff0c;一直在文档里吃灰。今天全部放出来分享给大家&#xff0c;需要的自己收藏。 2.漏洞练习平台 WebGoat漏洞练习平台&#xff1a; https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: http…

好程序员:Java书籍推荐,程序员必看的5本Java书籍,赶紧收藏!

今天好程序员给大家推荐5本Java书籍&#xff0c;各大高校都在使用&#xff08;具体名单如下&#xff09;&#xff0c;所有学习Java的程序员都不应该错过&#xff01; 第一本Java书籍《Java EE&#xff08;SSM框架&#xff09;企业应用实战》 本书全面介绍了JavaEE中MyBatis、Sp…

ChatGLM-6B论文代码笔记

ChatGLM-6B 文章目录ChatGLM-6B前言一、原理1.1 优势1.2 实验1.3 特点&#xff1a;1.4 相关知识点二、实验2.1 环境基础2.2 构建环境2.3 安装依赖2.4 运行2.5 数据2.6 构建前端页面3 总结前言 Github&#xff1a;https://github.com/THUDM/ChatGLM-6B 参考链接&#xff1a; ht…

“QT 快速上手指南“ 之 计算器(二)

文章目录前言一、QT 基本组件用法介绍&#xff1a;1. QLabel &#xff1a;2. QPushButton :3. QLineEdit:二、坐标系统三、窗口部件的大小设置1. setSize( ) 函数&#xff1a;2. resize( )函数&#xff1a;3. setFixedSize( )函数:4. setFixedWidth( ) 和 setFixedHeight( )函数…

大一被忽悠进了培训班

大家好&#xff0c;我是帅地。 最近我的知识星球开始营业&#xff0c;不少大一大二的小伙伴也是纷纷加入了星球&#xff0c;并且咨询的问题也是五花八门&#xff0c;反正就是&#xff0c;各种迷茫&#xff0c;其中有一个学弟&#xff0c;才大一&#xff0c;就报考培训班&#…

命令注入概述

概述命令注入即 Command Injection。是指在开发需求中&#xff0c;需要调用一些系统的命令来完成某些特定的功能。当未对用户输入的参数进行严格的过滤时&#xff0c;则有可能发生命令注入。攻击者可以通过提交恶意构造的参数破坏命令语句结构&#xff0c;从而达到执行恶意命令…

九大经典算法

1. 冒泡排序&#xff08;Bubble Sort&#xff09; 两个数比较大小&#xff0c;通过两两交换&#xff0c;像水中的泡泡一样&#xff0c;较大的数下沉&#xff0c;较小的数冒起来。 算法描述&#xff1a; 1.比较相邻的元素。如果第一个比第二个大&#xff0c;就交换它们两个&a…