Java应用中的数据加密与解密技术详解

在当今的网络环境中,数据安全变得尤为重要。无论是保护用户隐私还是确保业务数据不被篡改,加密技术都是不可或缺的一环。Java提供了丰富的API来支持各种加密算法,包括对称加密、非对称加密以及消息摘要等。本文将详细介绍如何在Java应用中使用这些技术。

1. 对称加密:AES算法

对称加密算法使用相同的密钥进行加密和解密。AES(高级加密标准)是目前最常用的对称加密算法之一。

代码示例:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;public class AESExample {public static void main(String[] args) throws Exception {String originalText = "Hello, World!";// 生成AES密钥KeyGenerator keyGen = KeyGenerator.getInstance("AES");keyGen.init(128); // 使用128位密钥SecretKey secretKey = keyGen.generateKey();// 加密Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE, secretKey);byte[] encryptedBytes = cipher.doFinal(originalText.getBytes());String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);System.out.println("Encrypted Text: " + encryptedText);// 解密cipher.init(Cipher.DECRYPT_MODE, secretKey);byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));String decryptedText = new String(decryptedBytes);System.out.println("Decrypted Text: " + decryptedText);}
}
2. 非对称加密:RSA算法

非对称加密使用一对密钥:公钥和私钥。公钥用于加密,私钥用于解密。RSA是最常用的非对称加密算法。

代码示例:
import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;import javax.crypto.Cipher;public class RSAExample {public static void main(String[] args) throws Exception {String originalText = "Hello, World!";// 生成RSA密钥对KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");keyGen.initialize(2048);KeyPair keyPair = keyGen.generateKeyPair();// 使用公钥加密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());byte[] encryptedBytes = cipher.doFinal(originalText.getBytes());String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);System.out.println("Encrypted Text: " + encryptedText);// 使用私钥解密cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));String decryptedText = new String(decryptedBytes);System.out.println("Decrypted Text: " + decryptedText);}
}
3. 消息摘要:MD5与SHA

消息摘要算法(也称为哈希算法)用于生成数据的唯一指纹。常见的算法有MD5和SHA系列。

代码示例:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;public class DigestExample {public static void main(String[] args) throws NoSuchAlgorithmException {String originalText = "Hello, World!";// MD5MessageDigest md5 = MessageDigest.getInstance("MD5");byte[] md5Bytes = md5.digest(originalText.getBytes());String md5Hash = Base64.getEncoder().encodeToString(md5Bytes);System.out.println("MD5 Hash: " + md5Hash);// SHA-256MessageDigest sha256 = MessageDigest.getInstance("SHA-256");byte[] sha256Bytes = sha256.digest(originalText.getBytes());String sha256Hash = Base64.getEncoder().encodeToString(sha256Bytes);System.out.println("SHA-256 Hash: " + sha256Hash);}
}
结论

Java提供了强大的加密和解密工具,可以帮助开发者保护数据安全。通过上述示例,我们可以看到如何使用AES、RSA和消息摘要算法来加密和验证数据。在实际应用中,选择合适的加密技术并正确实施是确保数据安全的关键。希望本文能帮助新人更好地理解和应用Java中的加密技术。

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

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

相关文章

编写一个可复用且使用方式简单的部署脚本

只需一行命令就可使用应用部署或重新部署 当我们部署Java项目时,一般有两种部署方式: 使用java -jar命令来运行jar包将应用打成jar包以容器的方式进行部署 本篇文章主要讲解第二种方式,以部署xxl-job-admin为例 1.编写restart.sh脚本&…

IDEA启动项目Error:java: JDK isn‘t specified for module ‘test‘

错误原因: idea自带JDK不匹配导致项目启动失败 解决方法: 修改idea自带JDK为自己安装的JDK 调整步骤:

rk3568 Android12 屏幕显示方向

rk3568 Android12 屏幕显示方向 在Android设备中,方向传感器的信息通常由加速度计和磁力计共同提供。开启自动旋转屏幕时,将设备从纵向转为横向或从横向转为纵向时,屏幕的内容会自动根据设备的方向进行调整。如果不希望屏幕自动旋转,可以禁用该选项并屏幕方向转为默认方向…

《编译原理》阅读笔记:p18

《编译原理》学习第 3 天,p18总结,总计 14页。 一、技术总结 1.assembler (1)计算机结构 要想学习汇编的时候更好的理解,要先了解计算机的结构,以下是本人学习汇编时总结的一张图,每当学习汇编时,看到“…

线上OOM问题排查总结

自己搭建了一个小博客,该文章与博客文章同步。 一般情况下,出现OOM主要有一下三种原因。 一次性申请对象的太多。更改申请对象数量。内存资源耗尽未释放。找到未释放的对象进行释放。本身资源不够。jmap -heap 查看堆信息。 分几种情况解决&#xff1…

多模态-大模型:MLLM综述(适用初学)

文章目录 前言一、多模态模型基础知识二、多模态指令调优(M-IT)1.MLLM基础2.模态对齐3.数据获取4.模态桥接 三、多模态上下文学习(M-ICL)三、多模态思维链 (M-CoT)四、LLM辅助视觉推理1.训练范式2. LLM功能 五、一些思考总结 前言…

网络通信基础-02

什么是ARP协议 ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,用于将网络层的IP地址解析为物理层的MAC地址。在计算机网络中,通信的两个设备之间需要知道对方的MAC地址才能进行数据传输,而…

OS中断机制-外部中断触发

中断函数都定义在中断向量表中,外部中断通过中断跳转指令触发中断向量表中的中断服务函数,中断指令可以理解为由某个中断寄存器的状态切换触发的汇编指令,这个汇编指令就是中断跳转指令外部中断通过在初始化的时候使能对应的中断服务函数如何判断外部中断被触发的条件根据Da…

关于ONLYOFFICE8.1版本桌面编辑器测评——AI时代的领跑者

关于作者:个人主页 目录 一.产品介绍 1.关于ONLYOFFICE 2.关于产品的多元化功能 二.关于产品体验方式 1.关于套件的使用网页版登录 2.关于ONLYOFFICE本地版 三.关于产品界面设计 四.关于产品文字处理器(Document Editor) 1.电子表格&a…

昇思25天学习打卡营第6天 | 函数式自动微分

神经网络的训练主要使用反向传播算法, 模型预测值(logits)与正确标签(label)送入损失函数(loss function)获得loss, 然后进行反向传播计算,求得梯度(gradie…

数据中心 250KW 水冷负载组概述

该负载专为数据中心冷水机组调试和测试应用而设计, 是一款紧凑的便携式产品,具有无限功率和水流控制功能,可实现精确的温升设置与施加的功率。鹦鹉螺是完全可联网的,可以从远程站控制单个或多个单元。 使用带有触摸屏 HMI 的 PLC,…

豆包大语言模型API调用错误码一览表

本文介绍了您可能从 API 和官方 SDK 中看到的错误代码。 http code说明 400 原因:错误的请求,例如缺少必要参数,或者参数不符合规范等 解决方法:检查请求后重试 401 原因:认证错误,代表服务无法对请求进…

FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流

《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2 FFmpeg向网络推流”介绍了轻量级流媒体服务器MediaMTX,虽然MediaMTX使用很简单,可是不能满足复杂的业务需求,故而实际应用中需要引入专业的流媒体服务器。 nginx-rtmp是开…

Navicat连接Oracle出现Oracle library is not loaded的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 使用Navicat链接Oracle的时候,出现如下提示:Oracle library is not loaded. 截图如下所示: 2. 原理分析 通常是由于缺少必需的 Oracle 客户端库或环境变量未正确配置所致 还有一种情况是 32位与64位的不匹配:Navica…

基于Langchain-chatchat搭建本地智能知识问答系统

基于Langchain-chatchat搭建本地智能 搭建本地智能知识问答系统:基于Langchain-chatchat的实践指南引言项目概述环境安装Anacondapip 项目安装步骤大语言模型(LLM)的重要性结语 搭建本地智能知识问答系统:基于Langchain-chatchat的…

记错医院预约的日期,选择加号还是回去?

记错了去医院的日期,起了个大早,用了 90 分钟才到医院,取号时提示没有预约的号,才发现记错时间了。这个时候是选择找医生加号还是直接回去呢?如果是你怎么选择? 如果选择找医生加号,号会排到最后…

STM32 ---- F1系列内核和芯片系统架构 || 存储器映像 || 寄存器映射

一,存储器映像 STM32 寻址范围:2^32 4 * 2^10 *2^10 K 4 * 2^10 M 4G 地址所访问的存储单元是按字节编址的。 0x0000 0000 ~ 0xFFFF FFFF 什么是存储器映射? 存储器本身不具有地址信息,给存储器分配地址的…

STM32单片机WDG看门狗详解

文章目录 1. WDG简介 2. IWDG框图 3. IWDG键寄存器 4. IWDG超时时间 5. WWDG框图 6. WWDG工作特性 7. WWDG超时时间 8. IWDG和WWDG对比 9. 代码示例 1. WDG简介 WDG(Watchdog)看门狗 看门狗可以监控程序的运行状态,当程序因为设计…

2024年6月24日 语法纠正

修改前的 So happy to see you again in our English Corner. Today, we have our old friend Fannie come with us and Ms. Liang is also here. Because today we use this new meeting material at first time, I arbitrarily assgin the roles according to everyone’s r…

Docker Compose--安装Nginx--方法/实例

原文网址:Docker Compose--安装Nginx--方法/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Docker Compose如何安装Nginx。 目录结构 ├── config │ ├── cert │ │ ├── xxx_bundle.pem │ │ └── xxx.key │ ├── conf.d │ …