ELGamal加密算法C语言实现,ElGamal实现加密算法

1.新建一个java项目,里面新建一个java类,加入要用到的jar包,整体的框架如图所示:

0818b9ca8b590ca3270a3433284dd417.png

2.ElGamal.java里面的代码如下所示:

import java.security.AlgorithmParameterGenerator;

import java.security.AlgorithmParameters;

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.PrivateKey;

import java.security.PublicKey;

import java.security.SecureRandom;

import java.security.Security;

import javax.crypto.spec.DHParameterSpec;

import org.apache.tomcat.util.codec.binary.Base64;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class ElGamal {

public static void jdkElGamal() {

try {

Security.addProvider(new BouncyCastleProvider());

// 1.初始化密钥

AlgorithmParameterGenerator algorithmParameterGenerator = AlgorithmParameterGenerator.getInstance("ElGamal");

algorithmParameterGenerator.init(256);

AlgorithmParameters algorithmParameters = algorithmParameterGenerator.generateParameters();

DHParameterSpec dhParameterSpec = algorithmParameters.getParameterSpec(DHParameterSpec.class);

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("ElGamal");

keyPairGenerator.initialize(dhParameterSpec, new SecureRandom());

KeyPair keyPair = keyPairGenerator.generateKeyPair();

PublicKey elGamalPublicKey = keyPair.getPublic();

PrivateKey elGamalPrivateKey = keyPair.getPrivate();

System.out.println("Public Key:" + Base64.encodeBase64String(elGamalPublicKey.getEncoded()));

System.out.println("Private Key:" + Base64.encodeBase64String(elGamalPrivateKey.getEncoded()));

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

jdkElGamal();

}

}

3.运行之后可以看到加密和解密的密钥:

0818b9ca8b590ca3270a3433284dd417.png

Elgamal加密算法原理及实现 目录 一、概述 二、知识准备 1、阶 2、本原元 三、算法流程 1、密钥生成 2、加密 3、解密 四、代码实现 一、概述 Rsa是基于大质数分解难题;而Elgamal是基于G上的离散对数难题 ElGamal算法是由Tather ElGamal在1985年提出的,它是一种基于离散对数难题的加密体系,与RAS算法一样,既能用于数据加密,也能用于数字签名。ElGamal算法是基于因数分解,而ElGamal算法是基于离散对数问题。与RSA算法相比,ElGamal算法哪怕是使用相同的. 阅读详情

相关推荐

密码学基础练习五道 RSA、elgamal、elgamal数字签名、DSA数字签名、有限域(GF)上的四则运算

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

2401_84972648的博客 2087

ElGamal公钥密码算法及ElGamal数字签名方案实现

ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法,其安全性是基于有限域上离散对数学问题的难解性。它至今仍是一个安全性良好的公钥密码算法。它既可用于加密又可用于数字签名的公钥密码体制。 一、ElGamal公钥密码算法描述 1.选取一个大素数p,使离散对数问题在有限域GF(p)上是难解的,选取g∈Z是一个本原元。 2.随机选取整数x,1≤x≤p-2,计算y=g^x...

我的书包哪里去了 3万+

深入理解ElGamal加密算法(附带代码实现)

ElGamal加密算法是一种基于Diffie-Hellman密钥交换协议的公钥加密算法。它以其发明者Taher ElGamal的名字命名,被广泛应用在电子邮件系统等领域。本文将深入探讨ElGamal加密算法的基本原理、流程以及如何实际应用。ElGamal加密算法基于计算离散对数的难度,其安全性相较于RSA等其他公钥加密算法而言,更为可靠。然而,ElGamal加密算法也存在一些局限性,如加密及解密计算量大,密文长度是明文的两倍等。

xixixi7777的博客 5581

C语言经典算法之ElGamal加密算法

ElGamal加密算法是一种非对称加密算法,基于Diffie-Hellman密钥交换协议,并利用了离散对数问题的困难性。

weixin_56154577的博客 1741

ELGamal加密算法C语言实现,ElGamal加密算法基础到实现详解

先从数学基础开始转载请注明http://blog.csdn.net/boksic 如有疑问欢迎留言羣羣是一个集合G,连同一个运算 “·”,它结合任何两个元素 a 和 b 而形成另一个元素,记为 a · b。符号 “·” 是对具体给出的运算,比如加法的一般的占位符。要具备成为羣的资格,这个集合和运算 (G, ·) 必须满足叫做羣公理的四个要求:1.封闭性。对于所有 G 中 a, b,运算 a · b...

weixin_33278577的博客 993

【传感器标定(三):激光雷达标定原理与实现详解】

本文系统介绍了激光雷达标定的基本原理与方法。主要内容包括:激光雷达标定的分类(内参标定和外参标定)、坐标系定义和刚体变换数学基础;详细阐述了测距误差和光束方向两种内参标定方法;重点分析了基于目标(平面标定板、三维标定物)和基于运动(手眼标定、点云配准)的外参标定方法;介绍了多传感器联合标定技术及非线性优化、鲁棒标定等实现方法;最后提出了定量和定性两种标定评估体系。为激光雷达在自动驾驶等领域的精确应用提供了系统的标定技术指导。

weixin_47429781的博客 3711

Elgamal 加密算法

Elgamal 加密算法1、ElGamal算法简介2、ElGamal算法原理3、c语言代码实现4、测试结果 1、ElGamal算法简介 ElGamal算法是由Tather ElGamal在1985年提出的,它是一种基于离散对数难题的加密体系,与RAS算法一样,既能用于数据加密,也能用于数字签名。ElGamal算法是基于因数分解,而ElGamal算法是基于离散对数问题。与RSA算法相比,ElGama...

金荣的个人技术博客 2万+

linux下使用Ollama本地部署LLM

Ollama 是一个用于在本地运行大语言模型(如 Llama 2、Mistral、Gemma、Qwen 等)的工具,支持模型的拉取、运行、管理等功能。当你运行ollama。

u013218342的博客 1624

C语言ElGamal公钥密码的实现

代码: #include<stdio.h> #include<stdlib.h> #include<math.h> long long pow_mod(long long a,long long b,long long p){ long long ans=1; long long tmp=a%p; while(b){ if(b&1) ans=ans*tmp%p; b>>=1; tmp=tmp*tmp%p; } retu

weixin_41064688的博客 1052

ELGamal加解密(C语言实现)资源文件说明

ELGamal加解密(C语言实现)资源文件说明 去发现同类优质开源项目:https://gitcode.com/ 资源简介 本仓库提供的资源文件为“ELGamal加解密(c语言实现).zip”,其中包含了使用C语言实现ELGamal公钥密码体制的源代码。ELGamal加密算法是一种基于离散对数的非对称加密算法,由T. ElGamal于1985年提出,其安全性与RSA算法相似,但在某些场景下具有不同...

gitblog_06792的博客 911

一步一步教你写股票走势图——K线图一(概述)

股票分时图部分已经开发完毕,受到了广大开发者的好评!界面、功能都挺完美,解决了好一些MP开发者的问题,博主甚是欣悦,更有动力去开源K线图。这里说一下,如果有问题直接留言或者发邮件,github上个人信息有邮件,我看到基本都会回复,博主不加qq的,体谅O(∩_∩)O。分析好了,废话不多说,我们分析下K线图吧,首先我们看下自选股K线图的效果吧效果还是很赞的,经过分时图的研究后,博主越来越确信自选股用的应

体验Android编程之美 3万+

密码学——ELGamel数字签名算法(C/C++实现)

使用C/C++实现ELGamel数字签名算法

Rayme629的博客 2875

从问卷到结论:手把手教你用SPSS 28完成一份完整的社科数据分析报告

本文详细介绍了如何使用SPSS 28完成社会科学研究中的数据分析报告,从问卷数据导入、清洗到描述性和推断性统计分析,再到结果呈现与报告撰写。通过实际案例演示,帮助研究者掌握SPSS 28的核心功能,提升数据分析效率与报告质量。

weixin_28717431的博客 231

ECC加密算法实现C源码:强大的公钥密码体系

ECC加密算法实现C源码:强大的公钥密码体系 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代密码学领域,安全性和效率是永恒的追求。ECC加密算法实现C源码项目,提供了一种兼顾这两点的解决方案。它基于椭圆曲线密码编码学(ECC,Elliptic Curves Cryptography)原理,使用C语言进行了精确的实现,为开发者提供了一种高效、安全的加密手段。 项目...

gitblog_06766的博客 430

ElGamal加密算法基础到实现详解

先从数学基础开始 转载请注明http://blog.csdn.net/boksic 如有疑问欢迎留言 群   群是一个集合G,连同一个运算 "·",它结合任何两个元素 a 和 b 而形成另一个元素,记为 a · b。符号 "·" 是对具体给出的运算,比如加法的一般的占位符。要具备成为群的资格,这个集合和运算 (G, ·) 必须满足叫做群公理的四个要求: 1.

boksic的专栏 4万+

提示词工程的几个参数

低 temperature + 低 top-p:输出最稳定、最可靠,适合需要准确性和一致性的场景。高 temperature + 高 top-p:输出最多样化、最富有创意,适合需要灵感和探索的场景。Max Length:您可以通过调整max length来控制大模型生成的 token 数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。是一个字符串,可以阻止模型生成 token,指定是控制大模型响应长度和结构的另一种方法。例如,您可以通过添加 “11” 作为。

weixin_44212787的博客 1815

ElGamal加密算法|ElGamal签名算法|公钥密码|数字签名|密码学|信息安全

ElGamal加密算法 简单介绍 EIGamal密码是除了RSA密码之外最有代表性的公开密钥密码 EIGamal是建立在离散对数的困难问题上的一种公钥体制密码 密钥产生 选一个素数p,以及小于p的两个随机数g和x 计算 y=gxy = g^xy=gx%p 公钥为(y, g, p),私钥为x 算法加密过程 M为明文 选取一个与p-1互素的整数k C1=gkC_1=g^kC1​=gk%p C2=ykMC_2=y^kMC2​=ykM%p (C1,C2)(C_1,C_2)(C1​,C2​)即为密文

Suryxin's blogs 1万+

在jetson上对fastdeploy进行源码编译(完整版)

在大多数Linux发行版中,你可以使用包管理器安装Python开发包。根据jetpack的版本选择对应的推理库版本。在~/.bashrc中写入这三行。

如果想成为中心,那么就到中心去吧。 652

密码学编程实验:ElGamal公钥加密算法 C++实现

在密码学中,ElGamal加密算法是一个基于DH密钥交换的非对称加密算法. EIGamal公开密钥密码体制是基于有限域中离散对数间题的难解性。它所根据的原理是:求解离散对数是困难的,而其逆运算可以应用平方乘的方法有效的计算出来。在相应的群 G中,指数函数是单向函数。 ElGamal加密算法由三部分组成:密钥生成、加密和解密。 密钥生成 密钥生成的步骤如下: Alice利用生成元g产生一个q阶循环群G的有效描述。该循环群需要满足一定的安全性质。 Alice从中随机选择一个 x。 Alice计算。 Alice公

kali_Chenye的博客 6109

非对称加密算法——ElGamal加密算法

非对称加密算法——ElGamal加密算法详解

专注分享技术、实用优质教程、资源 2326

HBase骚操作之数据加载方式BulkLoad

本文研究了一种HBase BulkLoad的入库方式,该方式利用HBase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。该方式配合MapReduce完成,高效便捷,而且不占用Region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对Hbase节点的写入压力。HBase BulkLoad对于异构数据源的合并及大量数据一次性导入具有重要指导意义,相比HBase Put操作在性能上具有较高的优势

石榴姐yyds 7764

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

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

码农研究僧的博客 1万+

深度学习实战:基于YOLOv5/v8/v10的快递暴力分拣检测系统(完整版)

在电商物流高速发展的今天,快递包裹日均处理量已突破亿件级别。然而,快递分拣过程中的暴力抛扔行为不仅造成包裹损坏,更带来巨大的经济损失。据统计,每年因暴力分拣导致的快递破损投诉占总投诉量的30%以上。传统的人工监控方式存在疲劳、疏漏等问题,因此开发一套智能化的快递暴力分拣检测系统具有重要的现实意义。

YOLO 256

Python实现ElGamal加密算法

使用Python实现ElGamal加密算法,完成加密解密过程,明文使用的是125位数字(1000比特)。 代码如下: import random from math import pow a = random.randint(2, 10) #产生小于p的随机常数a def gcd(a, b): if a < b: return gcd(b, a) elif a % b == 0: return b; else: return

出门左拐是海的博客 4537
上一篇: linux mongodb配置,linux下mongodb安装及配置
下一篇: android无缝切换播放器,Android使用MediaPlayer和TextureView实现视频无缝切换
彭喵喵
博客等级 码龄8年 2483粉丝 3191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值