每日一得--非对称加密算法之(DH)

[JAVA加解密]DH算法 一、算法描述: 1.简介: Diffie-Hellman:一种确保共享KEY安全穿越不安全网络的方法。Whitefield与Martin Hellman在1976年提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm).这个机制的巧妙在于需要安全通信的双方可以用这个方法确 阅读详情

一,实现对称加密算法的方式:jdk实现方式




import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;
import javax.crypto.KeyAgreement;
import javax.crypto.SecretKey;
import javax.crypto.interfaces.DHPublicKey;
import javax.crypto.spec.DHParameterSpec;
import org.apache.commons.codec.binary.Hex;
import com.sun.org.apache.xalan.internal.utils.Objects;


//非对称算法DH
public class DHMain {
private static String str="husq DH test";
/**
* @param args
*/
public static void main(String[] args) {
jdkDH();
}


public static void jdkDH(){
try{
//1 初始化秘钥
KeyPairGenerator senderkeyPairGenerator = KeyPairGenerator.getInstance("DH");
senderkeyPairGenerator.initialize(512);
KeyPair senderKeyPair = senderkeyPairGenerator.generateKeyPair();
byte[] senderPublicKeyEnc = senderKeyPair.getPublic().getEncoded();//发送方秘钥,发送给接收方(网络,文件)

//2 初始化接收方秘钥
KeyFactory receiverKeyFactory = KeyFactory.getInstance("DH");
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(senderPublicKeyEnc);
PublicKey receiverPublicKey = receiverKeyFactory.generatePublic(x509EncodedKeySpec);

DHParameterSpec dhParameterSpec = ((DHPublicKey)receiverPublicKey).getParams();
KeyPairGenerator receiverKeyPairGenerator = KeyPairGenerator.getInstance("DH");
receiverKeyPairGenerator.initialize(dhParameterSpec);
KeyPair receiverKeyPair =receiverKeyPairGenerator.generateKeyPair();
PrivateKey privateKey = receiverKeyPair.getPrivate();
byte[] receiverPublicKeyEnc = receiverKeyPair.getPublic().getEncoded();

//3 秘钥构建
KeyAgreement receiverKeyAgreement = KeyAgreement.getInstance("DH");
receiverKeyAgreement.init(privateKey);
receiverKeyAgreement.doPhase(receiverPublicKey, true);
SecretKey receiverDesKey = receiverKeyAgreement.generateSecret("DES");

KeyFactory senderKeyFactory = KeyFactory.getInstance("DH");
x509EncodedKeySpec = new X509EncodedKeySpec(receiverPublicKeyEnc);
PublicKey senderPublicKey =senderKeyFactory.generatePublic(x509EncodedKeySpec);
KeyAgreement senderKeyAgreement = KeyAgreement.getInstance("DH");
senderKeyAgreement.init(senderKeyPair.getPrivate());
senderKeyAgreement.doPhase(senderPublicKey, true);
SecretKey senderDesKey = senderKeyAgreement.generateSecret("DES");
if(Objects.equals(receiverDesKey, senderDesKey)){
System.out.println("双方秘钥相同");
}

//4 加密
Cipher  cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, senderDesKey);
byte[] result = cipher.doFinal(str.getBytes());
System.out.println("jdk dh encrypt: "+Hex.encodeHexString(result));


//5 解密
cipher.init(Cipher.DECRYPT_MODE, receiverDesKey);
byte[] nsign = cipher.doFinal(result);
System.out.println("jdk dh decrypt: "+new String(nsign));
}catch(Exception e){
e.printStackTrace();
}
}


}

Ubuntu 18.04 OpenSSH 四层纵深加固实战指南 SSH(Secure Shell)作为远程管理的核心协议,其安全性直接决定系统边界防护能力。OpenSSH 通过加密通信、身份认证与访问控制实现安全远程交互,但默认配置常因算法过时、策略宽松或日志缺失而成为攻击入口。尤其在 Ubuntu 18.04 这类已进入ESM支持阶段的长期服役系统中,OpenSSH 7.6p1 的弱密钥交换(如 diffie-hellman-group1-sha1)、明文密码允许及静态访问控制等缺陷,极易被自动化扫描与爆破工具利用。本文聚焦真实生产环境下的可落地加固,基于 sshd_ 阅读详情

相关推荐

py每日spider案例之某翻译接口参数h逆向

【代码】py每日spider案例之某翻译接口参数h逆向。

我不是码农的博客~~~ 557

DH算法在Java中的应用

以上代码通过Java的KeyPairGenerator和KeyAgreement类实现了DH算法的具体过程,可以用于实现双方之间的秘密通信。在实际应用中,可以在以上基础上再进行AES等对称加密算法的应用,进一步提高通信的安全性。DH算法是一种密钥交换协议,其主要作用是解决双方在不可信的通信媒介上进行秘密通信时建立共享密钥的问题。综上所述,DH算法在Java中的应用具有广泛的实用性和安全性,能够很好地解决双方秘密通信的问题。但是在实际应用中,还需要注意对参数的安全性进行保护,以避免安全漏洞的出现。

我点评的博客 586

py每日spider案例之某短视频文案提取接口(AES算法,难度中等)

【代码】py每日spider案例之某短视频文案提取接口(AES算法,难度中等)

我不是码农的博客~~~ 84

DH、DHE、ECDHE加密算法

于是,DH 交换密钥时就只有客户端的公钥是变化,而服务端公钥是不变的,那么随着时间延长,黑客就会截获海量的密钥协商过程的数据,因为密钥协商的过程有些数据是公开的,黑客就可以依据这些数据暴力破解出服务器的私钥,然后就可以计算出会话密钥了,于是之前截获的加密数据会被破解,所以 static DH 算法不具备前向安全性。但反过来,知道真数却很难推算出对数。static DH 算法里有一方的私钥是静态的,也就说每次密钥协商的时候有一方的私钥都是一样的,一般是服务器方固定,即 a 不变,客户端的私钥则是随机生成的。

迷雾总会解 5260

DH密钥交换算法Java实现

DH密钥交换算法这个机制的巧妙在于它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道确定对称密钥。 我用Java写了两个例子,有需要的可以看看。

DH算法+Xxtea算法Java实现

网上很多都不可用,所以自己创新了一下,把DH的用法彻底搞懂了. 源码是直接可以拿来用的.

DH算法(密钥交换算法)的总结和Java实现案例

我们在使用AES算法的过程中,使用了相同的密钥,那么如果在实际应用中: 在网络上的两个用户之间需要传输文件时,A使用自己的密钥向B发送了加密文件,那么B就需要A的密钥来解密文件。那么这就会出现安全隐患:在不安全的信道上A发送的加密文件被黑客拿到了,但是由于是加密过的,所以没有什么用。但是如果被黑客拿到了密钥呢?要解决这个问题,就需要使用密钥交换算法:DH算法(Diffie-Hellman算法)。DH算法解决了在双方不直接传递密钥的情况下完成密钥交换。

m0_64529944的博客 2036

红外气体检测方案解析:从NDIR原理到物联网终端设计实践

气体检测是工业安全与环境监测的核心需求,其技术原理主要基于气体分子对特定物理或化学信号的响应。非色散红外(NDIR)技术作为一种物理检测方法,通过测量气体分子对特定波长红外光的吸收来定量浓度,因其不依赖化学反应,具备寿命长、抗干扰强和响应快等优势。在工程实践中,红外气体检测方案的价值在于为物联网终端设备提供了高可靠、低功耗的感知能力,广泛应用于工业过程监控、环境空气质量监测以及智能家居安全预警等场景。本文以一套集成了Microchip MCU、Axetris红外光源和Pyreos热释电传感器的参考设计为例,

weixin_30954817的博客 393

密钥交换算法DH(Java实现)

密钥交换算法——DH 1.简述     1976年,W.Diffie和M.Hellman在发表的论文中提出了公钥加密算法思想,但当时并没有给出具体的实施方案,原因在于没有找到单向函数(也就是消息摘要算法),但在该论文中给出了通信双方通过信息交换协商密钥的算法,即Diffie-Hellman密钥交换算法(简称为DH算法)。该算法的目的在于让消息的收发双方可以在安全的条件下交换密钥,以备后续加密/

进击的小怪兽 1万+

Springboot + vue 实现导出word

Springboot + vue 实现导出word 后端代码 使用word先创建好已知的模板 使用word工具另存为.xml格式的文件 使用freemarker ftl模板 将修改后的xml文件复制到开发工具中,将文件后缀修改为ftl文件,并且将里面的动态值使用${}包裹例如:${zyjn} word工具类 /*** * * Project Name:maventest * <p>生成word工具类<br> * * @ClassName: WordUtil *

qq_45542373的博客 2895

目标检测技术的发展:从R-CNN、YOLO到DETR、DINO

OV-DINO的出现标志着在开放域目标检测领域的重大进步,其在处理未见过的物体类别时的能力得到了显著提升。这项技术对于需要适应未知或变化环境的应用具有重要意义,如自动驾驶、机器人视觉、安防监控等。

DeepAIedu的博客 2631

每日一道面试题,2019Android大型Bat面试知识分享

前言 最近半年,常常有人问我 “Android就业市场究竟怎么样,我还能不能坚持下去 ?” 现在想想,移动互联网的发展不知不觉已经十多年了,Mobile First 也已经变成了 AI First。换句话说,我们已经不再是“风口上的猪”。移动开发的光环和溢价开始慢慢消失,并且正在向 AI、区块链等新的领域转移。移动开发的新鲜血液也已经变少,最明显的是国内应届生都纷纷涌向了 AI 方向。 ​ 可以说...

weixin_44339238的博客 161

GD32F4系列Keil工程模板搭建全攻略(手把手教学版)

本文提供了一份详细的GD32F4系列Keil工程模板搭建指南。从软件安装、固件库获取、目录规划,到Keil工程创建、文件添加、关键配置(如编译器选项、头文件路径、时钟设置),再到代码定制与常见问题排查,手把手教你构建一个标准化、模块化的开发基础。文章重点介绍了如何利用官方固件库和代码模板,快速建立稳定高效的开发环境,适用于GD32F407等Cortex-M4内核芯片的入门与项目开发。

weixin_29159995的博客 429

应用层编解码调优思路——TLS/SSL性能优化

说起应用层协议优化,我们首先想到的一般是使用HTTPS代替HTTP,即TLS/SSL协议来保障应用层消息安全。不过针对一些图片网站,在权衡安全与性能后选择了后者,所以还在使用HTTP。 实际上TLS/SSL是由一系列加密算法及规范组成,对于性能优化我们从两个切入点来看,分别是如何选择加密算法以及加密时的密钥是如何传递的。 先来说下对加密算法的选择,目前主流的对称加密算法是AES(Advanced Encryption Standard),它在网站访问和压缩软件中均有被使用到,这也是我们首选的对称加密算法

Snippers的博客 722

ENVI哨兵一号数据处理

使用ENVI+SarScape处理哨兵数据

Rjjjjj11的博客 2万+

神经形态芯片:IBM TrueNorth技术详解以及应用案例

2018年的一项演示中,机器人使用TrueNorth处理了复杂的路径规划,功耗仅为传统系统的1/10。它通过模仿人脑的结构,解决了传统芯片在功耗和并行性上的痛点,并在图像识别、物联网和机器人等领域展现了强大潜力。:不同于传统芯片的时钟驱动,TrueNorth是事件驱动的。例如,工厂中的振动传感器使用TrueNorth检测设备故障的早期迹象,实现了更高效的维护策略,避免了停机时间。:在医疗领域,TrueNorth可以用于可穿戴设备,比如一个智能助听器,它能过滤噪音并增强特定声音,功耗低到可以用纽扣电池供电。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2477

2024年Android最全每日一道面试题,2024Android大型Bat面试知识分享,大厂面试八股文

考虑到文章的篇幅问题,我把这些问题和答案以及我多年面试所遇到的问题和一些面试资料做成了PDF文档网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!例如:RSA、DSA、ECDSA、 DH、ECDHE。

2401_84538474的博客 719

uniapp [安卓苹果App端] - 详细实现下载文件保存到用户手机本地,指定文件存储位置路径及文件夹名称下载并保存,Uniapp app端将文件下载保存并储存到指定目录(手机系统存储空间权限检测)

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,app端下载文件,移动端文件下载,并保存到手机本地存储空间,uniapp下载文件保存到手机本地,iOS下载文件怎么保存,系统读写存储空间权限,下载文件到本地详细流程及源代码,保存自定义目录,uniapp,实现下载文件并保存到本地,文件后缀,如何指定手机的存放目录路径url,点击下载文档到手机中并提示存储位置,如何在uniapp中实现文件下载功能,uniApp文件下载,怎么指定文件保存目录,下载报错,没反应

🏆 前端领域优质创作者 1万+

# 软考软件设计师 · 每日考点推送 2026年7月8日(周三)| 下半年备考倒计时 **108天** | 基础精读第10天

| 安全服务 | 英文 | 含义 | 实现技术 | |---------|------|------|---------| | **机密性** | Confidentiality | 信息不被泄露给未授权者 | 加密(对称/非对称)、访问控制 | | **完整性** | Integrity | 信息不被非法篡改 | 哈希摘要、数字签名、MAC | | **可用性** | Availability | 系统和服务正常可用 | 冗余、容灾、防火墙 | | **认证性** | Authentication |

[Blog][Domain] programb.blog.youkuaiyun.com 229

音视频OSD——使用freetype将矢量字库的信息叠加至YUV

目录freetypes使用步骤1)包含头文件:2) 初始化库:3)加载face对象:4)设置字体大小5)设置字体位置,以及旋转度数:6)加载字形图像准备矢量字库代码.c.h效果叠加至YUV freetypes FreeType是一个完全开源的、可扩展、可定制且可移植的字体引擎,它提供TrueType字体驱动的实现统一的接口来访问多种字体格式文件 下载freetypes tar -xjf freetype-2.4.10.tar.bz2 cd freetype-2.4.10/ ./configure

路人coder 2364

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

公钥加密与TLS握手:数字安全的核心机制解析

公钥加密是现代网络安全的基石,通过非对称加密算法(如RSA、ECC)实现数据加密与身份验证。其核心原理基于数学上的陷门函数,公钥用于加密数据,私钥用于解密,这种机制确保了传输安全性和身份真实性。在工程实践中,TLS协议利用公钥加密建立安全通道,通过证书验证、密钥协商等步骤实现HTTPS通信。典型应用包括网站加密、代码签名、SSH认证等场景。随着量子计算发展,后量子密码学(如基于格的加密)正在兴起,但当前主流仍采用RSA/ECC与对称加密(如AES)结合的混合方案。开发者需特别注意密钥管理,避免将私钥上传至G

weixin_33847182的博客 339

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Ubuntu 20.04 SSH客户端加固实战:从默认风险到零信任连接

SSH客户端是远程访问的基础协议,但其默认配置常隐含主机密钥验证宽松、弱加密算法启用、环境信息泄露等安全短板。理解OpenSSH客户端工作原理,掌握KexAlgorithms密钥交换机制与StrictHostKeyChecking主机校验逻辑,可显著提升终端侧攻击面防护能力。这类加固不改变用户操作习惯,却能有效防御中间人攻击、协议降级和敏感信息采集,广泛适用于开发运维、金融医疗及政务系统等对终端可信性有明确要求的场景。尤其针对Ubuntu 20.04等长期支持版本,结合OpenSSH 8.2p1特性实施分层

GOBY 栏目 504

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

考研摆烂后如何一周突击复试?北邮网安复试准备全流程(含密码学、408速成法)

本文为考研复试边缘人提供网络安全专业7天突击指南,涵盖密码学、网络攻防、408专业课及英语口语等核心内容。通过黄金72小时规划、高频考点突破和模拟面试技巧,帮助考生在极端时间内实现复试逆袭,特别适合初试成绩处于录取线边缘的抢救型选手。

weixin_30856725的博客 320

全站HTTPS来了!有何优势、与HTTP有何不同?

全站HTTPS来了!有何优势、与HTTP有何不同? 每日头条 | 2015-12-30 14:50 最近大家在使用百度、谷歌或淘宝的时候,是不是注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 HTTPS 进行保护。仔细观察,会发现这些网站已经全站使用 HTTPS。同时,iOS 9 系统默认把所有的 http 请求都改为 HTTPS 请求。随着互联网的发

pingdouble的专栏 595

【安全篇】万字深潜:密钥分发与公钥认证——从数学信任到零信任架构的工程实战

密钥分发与公钥认证是网络安全的地基。地基不牢,地动山摇。永远假设网络不可信:所有密钥交换必须在不安全信道上安全完成。前向保密是底线:长期密钥泄露不应危及历史会话。自动化是唯一出路:人工管理密钥在规模化场景下必然失败。短生命周期优于吊销:让密钥在泄露前就自然过期。身份与网络解耦:IP/端口不是身份,加密身份才是。为后量子做准备:Harvest Now, Decrypt Later威胁已至,混合模式是过渡桥梁。纵深防御:单一机制总会失效,多层叠加提高攻击成本。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 397
上一篇: 每日一得--对称加密算法之(DES3)
下一篇: 每日一得--非对称加密算法之(RSA)
一根筋i
博客等级 码龄16年 7粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值