Java常见的两种加密方式

Java常见加密解密方式

本文主要介绍一种对称加密和一种单向加密
AES => 对称加密
MD5 => 非对称加密

AES

 * 对称加密* AES(AdvancedEncryption Standard,高级数据加密标准)* 算法支持128位、192位和256位的秘钥长度,加密速度比DES和DESede都快,至今还没有被破解的报道。* 经过验证,目前采用的AES算法能够有效抵御已知的针对DES算法的所有攻击方法,如部分差分攻击、相关秘钥攻击等。* AES算法因秘钥建立时间短、灵敏性好、内存需求低等优点,在各个领域得到广泛的研究与应用。* JDK8支持128位、192位和256位长度的AES秘钥,* * 下面举个JDK8实现AES的128位加密的例子* 其中customKey 是密钥,128位即16字节,  word 就是需要加密的字符串
加密
    public static String encrypt(String customKey, String word) throws Exception {String algorithm = "AES";String transformation = "AES";SecretKey secretKey = new SecretKeySpec(customKey.getBytes(StandardCharsets.UTF_8), "AES");SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getEncoded(), algorithm);
//        System.out.println("AES秘钥:" + Base64.getEncoder().encodeToString(secretKey.getEncoded()));Cipher cipher = Cipher.getInstance(transformation);cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);byte[] encrypt = cipher.doFinal(word.getBytes());
//        System.out.println("AES加密结果:" + Base64.getEncoder().encodeToString(encrypt));return Base64.getEncoder().encodeToString(encrypt);}
解密
public static String decrypt(String customKey ,String word) throws Exception {String algorithm = "AES";String transformation = "AES";SecretKey secretKey = new SecretKeySpec(customKey.getBytes(StandardCharsets.UTF_8), "AES");SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getEncoded(), algorithm);
//        System.out.println("AES秘钥:" + Base64.getEncoder().encodeToString(secretKey.getEncoded()));Cipher cipher = Cipher.getInstance(transformation);cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);byte[] decrypt = cipher.doFinal(Base64.getDecoder().decode(word));
//        System.out.println("AES解密结果:" + new String(decrypt));return new String(decrypt);}
演示
    public static void main(String[] args) throws Exception {String word = "admin123";String key = "abcdefgh01234567";String encrypt = encrypt(key, word);String decrypt = decrypt(key, encrypt);System.out.println(encrypt);System.out.println(decrypt);}

MD5

加密
    public static String getMD5(String password){String secretKey = "";try {MessageDigest md = MessageDigest.getInstance("MD5");md.update(password.getBytes());byte b[] = md.digest();int i;StringBuffer buf = new StringBuffer("");for (int offset = 0; offset < b.length; offset++) {i = b[offset];if (i < 0)i += 256;if (i < 16)buf.append("0");buf.append(Integer.toHexString(i));}String result = buf.toString();String md5up32 = result;String md5down32 = result.toUpperCase();String md5up16 = buf.toString().substring(8, 24);String md5down16 = buf.toString().substring(8, 24).toUpperCase();secretKey = md5up32;} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return secretKey;}

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

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

相关文章

千兆光模块和万兆光模块的差别是什么?

千兆光模块和万兆光模块是目前使用最广泛的光模块之一&#xff0c;它们之间有什么差别呢&#xff1f;下面从传输速率、光纤类型、距离等多个方面详细分析千兆光模块和万兆光模块的差别。 一、传输速率 千兆光模块的传输速率为1.25Gbps&#xff0c;而万兆光模块的传输速率为10…

记录一下 malloc 是如何分配内存的

系统深入学习笔记-malloc 以 32 位系统为例&#xff0c;&#xff0c;通过这张图你可以看到&#xff0c;用户空间内存从低到高分别是 6 种不同的内存段&#xff1a; 代码段&#xff0c;包括二进制可执行代码&#xff1b;数据段&#xff0c;包括已初始化的静态常量和全局变量B…

燃气安全如何保障?万宾燃气管网监测系统时刻感知管网运行态势

近年来随着我国城镇化建设的加快&#xff0c;燃气已经成为每个家庭的必需品。然而&#xff0c;每年夏季频繁发生的燃气爆炸事故&#xff0c;已经严重危害人民生命财产安全危害社会公共安全和公共利益。为了保障燃气安全运行&#xff0c;近日&#xff0c;许多城市都在大力推进燃…

深入浅出Java的多线程编程——第二篇

目录 前情回顾 1. 中断一个线程 1.1 中断的API 1.2 小结 2. 等待一个线程 2.1 等待的API 3. 线程的状态 3.1 贯彻线程的所有状态 3.2 线程状态和状态转移的意义 4. 多线程带来的的风险-线程安全 (重点) 4.1 观察线程不安全 4.2 线程安全的概念 4.3 线程不安全的原因…

代码随想录算法训练营第23期day7| 454.四数相加II 、383. 赎金信 、15. 三数之和、18. 四数之和

目录 一、&#xff08;leetode 454&#xff09;四数相加II 二、&#xff08;leetcode 383&#xff09;赎金信 暴力解法 哈希法 三、&#xff08;leetcode 15&#xff09;三数之和 四、&#xff08;leetcode 18&#xff09;四数之和 一、&#xff08;leetode 454&#xf…

电涌保护器外部专用脱离器(SCB)后备保护器产品说明

为了更好的满足不同应用场景的市场需求&#xff0c;地凯科技经过两年多不断的研发与试验&#xff0c;对电涌保护器外部专用脱离器 SCB 后备保护器产品&#xff08;以下简称 SCB&#xff09;进行了技术升级&#xff0c;升级后的SCB 产品在电气性能、外观尺寸、智能化和可靠性等方…

springboot+vue智能诊后随访系统 java医院挂号预约诊断系统

本系统是基于java前端架构Vue用java编程语言及javascript、CSS、HTML语言进行编写设计并实现相关功能的。 设计步骤及措施&#xff1a; &#xff08;1&#xff09;确定项目名称、项目研究内容&#xff0c;开题报告提交及修改。 &#xff08;2&#xff09;项目开发准备&#xff…

[2023.09.26]: JsValue的转换体验与as关键字的浅析

昨天解决了焦点问题&#xff0c;今天就开始搬砖了。本以为可以一帆风顺&#xff0c;但是还是遇到了几个问题&#xff0c;不过还好&#xff0c;都被一一解决&#xff0c;这里我分享一下JsValue的转换体验以及关键字as的使用浅析。 场景描述 我是在什么情况下遇到JsValue的转换…

全志H616在低温reboot过程中进入休眠解决方法

主题 H618在DDR物料适配支持时候&#xff0c;reboot实验异常进休眠&#xff0c;在reboot老化测试中报如下log1 [2023-07-11,16:56:44][ 40.325238][ T1] init: Untracked pid 1888 exited with status 0 [2023-07-11,16:56:44][ 40.325295][ T5] binder: undeliver…

比起“如果环境这样这样,那便那样那样”,我更喜欢听到“要怎样怎样变成想要的样子”

比起“如果环境这样这样&#xff0c;那便那样那样”&#xff0c;我更喜欢听到“要怎样怎样变成想要的样子” 许多事情不只是选择题、判断题&#xff0c;还可以是填空题、论文&#xff0c;重点是你怎么看待&#xff0c;格局有没有打开.

中睿天下参展2023海军工程大学首届网络安全文化周并发表主题演讲

2023年9月3日至9月8日&#xff0c;海军工程大学首届网络安全文化周活动于武汉举办。本次活动以“守护蓝疆网安有我”为主题&#xff0c;设有特邀嘉宾前沿讲座、网络安全圆桌交流论坛、网络安全科技展、网络对抗实战竞技、网络安全保密视频创作和信息安全知识竞赛等系列活动。 海…

自学WEB后端03-Node.js 语法

学习后端路线&#xff1a; JavaScript 基础语法 Node,js 内置 API 模块 (fs、 path、 http等) 第三方 API 模块 (express、mysql等) 今天主要回顾下Node.js 语法 Node.js 是基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它提供了一种能够在服务器端运行 JavaScr…

Selenium和Requests搭配使用

Selenium和Requests搭配使用 前要1. CDP2. 通过requests控制浏览器2. 1 代码一2. 2 代码2 3. 通过selenium获取cookie, requests携带cookie请求 前要 之前有提过, 用selenium控制本地浏览器, 提高拟人化,但是效率比较低,今天说一种selenium和requests搭配使用的方法 注意: 一定…

2023网络安全面试题(附答案)+面经

前言 随着国家政策的扶持&#xff0c;网络安全行业也越来越为大众所熟知&#xff0c;相应的想要进入到网络安全行业的人也越来越多&#xff0c;为了拿到心仪的Offer之外&#xff0c;除了学好网络安全知识以外&#xff0c;还要应对好企业的面试。 所以在这里我归纳总结了一些网…

软件的开发步骤,需求分析,开发环境搭建,接口文档 ---苍穹外卖1

目录 项目总览 开发准备 开发步骤 角色分工 软件环境 项目介绍 产品原型 技术选型 开发环境搭建 前端:默认已有 后端 使用Git版本控制 数据库环境搭建 前后端联调 ​登录功能完善 导入接口文档 使用swagger​ 和yapi的区别 常用注解 项目总览 开发准备 开发步骤…

解决方案(一)蓄水池抽样算法(可用于抽样,抽奖等场景)

蓄水池抽样算法 描述Java基本实现蓄水池模型参与抽样 描述 该算法可用于从数据流中随机抽取指定数量的样本。 假设目标样本数量为 n&#xff0c;参与抽样的数量为 i。 蓄水池容量为 n&#xff0c;参与抽样的数量为 i 每接收一个样本&#xff0c;不断计算抽样结果&#xff1a;…

协程是什么?为何说协程具有同步的编程方式又具有异步的性能?

协程&#xff08;Coroutine&#xff09;是一种并发编程模型&#xff0c;它允许程序在单线程内实现多个独立的执行线程&#xff0c;这些线程可以非阻塞地挂起和恢复&#xff0c;以实现协作式多任务处理。协程的核心思想是让程序员能够控制执行的流程&#xff0c;而不是完全交给操…

如何通过bat批处理实现快速生成文件目录,一键生成文件名和文件夹名目录

碰对了情人&#xff0c;相思一辈子。 具体方法步骤&#xff1a; 一、创建一个执行bat文件&#xff08;使用记事本即可&#xff09;&#xff1b; 1、新建一个txt文本空白记事本文件 2、复制以下内容进记事本内 dir/a/s/b>LIST.TXT &#xff08;其中LIST.TXT文件名是提取后将…

爬虫入门基础-HTTP协议过程

在进行网络爬虫开发之前&#xff0c;了解HTTP协议的基本过程是非常重要的。HTTP协议是Web通信的基础&#xff0c;也是爬取网页数据的核心。本文将为您详细介绍HTTP协议的过程&#xff0c;帮助您理解爬虫背后的网络通信机制。让我们一起来探索吧&#xff01; 一、什么是HTTP协议…

Linux入门教程||Shell echo命令||Shell printf 命令

Shell 的 echo 指令与 PHP 的 echo 指令类似&#xff0c;都是用于字符串的输出。命令格式&#xff1a; echo string您可以使用echo实现更复杂的输出格式控制。 1.显示普通字符串: echo "It is a test"这里的双引号完全可以省略&#xff0c;以下命令与上面实例效果一…