首页 > 编程语言 >Java 基于Hutool实现DES加解密

Java 基于Hutool实现DES加解密

时间:2023-08-20 23:44:48浏览次数:37  
标签:Java String 含义 DES 加解密 占位 篇幅 添加

POM.XML配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.shouke</groupId>
    <artifactId>des-utils</artifactId>
    <version>1.0</version>

    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.1.0</version>
        </dependency>
    </dependencies>
</project>

代码实现

package com.shouke.utils;

import cn.hutool.core.codec.Base64;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.DES;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;

/**
 * @description:对称加密
 */
public class DesUtil {

    private static final String KEY = "jPQQqFT3lwg=";

    /**
     * 根据KEY生成DES
     */
    private static final DES DES = SecureUtil.des(SecureUtil.generateKey(SymmetricAlgorithm.DES.getValue(), KEY.getBytes()).getEncoded());

    /**
     * 获取加密后信息
     *
     * @param plainText 明文
     * @return 加密后信息
     */
    public static String getEncryptData(String plainText) {
        return DES.encryptHex(plainText); // 加密为16进制
    }

    /**
     * 获取解密后信息
     *
     * @param cipherText 密文
     * @return 解密后信息
     */
    public static String getDecryptData(String cipherText) {
        return DES.decryptStr(cipherText);
    }

    /**
     * 生成密钥,并转为字符串,可以储存起来,解密时可直接使用
     *
     * @return 密钥
     */
    public static String getSecretKey() {
        byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.DES.getValue()).getEncoded(); // 随机生成秘钥
        return Base64.encode(key);
    }

    public static void main(String[] args) {
        System.out.println(getEncryptData("shouke")); // 输出:21e995a30ccbfa38
    }
}

=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======
=文章篇幅过短,不允许发布,添加文字占位符,无其它含义======

标签:Java,String,含义,DES,加解密,占位,篇幅,添加
From: https://www.cnblogs.com/shouke/p/17644881.html

相关文章

  • 【Todesk安装与使用】
    (Todesk安装与使用)一、安装前提:控制电脑与被控电脑均需要下载软件安装Todesk官方下载链接:https://www.todesk.com/进入官网后,点击个人免费版下载下载完成后,双击运行点击右下角的自定义选项选择安装位置这里作者安装到了D盘安装完成后,进行登录方式的选择,这里作者使用......
  • Java中的Future
    1.Future解决了什么问题Future是java中的一个接口,主要用于java多线程计算过程的异步结果获取,能够感知计算的进度,与传统的多线程实现方式,比如继承Thread类,实现runnable接口,它们主要的局限在于对多线程运行的本身缺少监督。2.Callable接口和Runnable接口区别下面是它们之间的主要......
  • java 网络编程
    网络编程一、概述网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大,功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件,软件,数据信息等资源。网......
  • Windows中Java安装及环境变量配置
    Windows中Java安装及环境变量配置目录Windows中Java安装及环境变量配置1、下载jdk安装包2、安装JDK3、配置环境变量3.1、环境变量配置页进入3.2、环境变量1:JAVA_HOME3.3、环境变量2:CLASSPATH3.4、环境变量3:Path4、验证安装1、下载jdk安装包通过以下镜像站下载jdk安装包:https://......
  • Cisco CCNA——Network Design Model And Case Study
    NetworkDesignModelAndCaseStudy园区网分层结构接入层技术:子网划分、vlan划分、trunk汇聚层:trunk、vrp、链路聚合核心层:静态路由、动态路由、默认路由、ospf、vtp、acl出口层:nat转换、PPPoE、stp常见网络模型SMB中小型企业网教育行业模型(中小型网络)教育行业模型(大型网络)金融行......
  • Java动态追踪
    Java动态追踪什么是Java动态追踪?Java动态追踪是一种工具,可以用于监控Java应用程序的性能,了解应用程序在运行时的行为。Java动态追踪工具可以跟踪应用程序的方法调用、内存使用情况、线程活动等。它可以帮助开发人员找到应用程序的瓶颈和问题,并提供优化建议。Java动态追踪工具可......
  • JavaWeb随笔
    JavascriptJavascript是客户端的一个脚本语言<scriptlanguage="JavaScript">   varstr="helloworld";   alert(typeofstr);   str=999;   alert(typeofstr);  </script>Javascript是一门弱类型的语言,变量的数据类型由后面附的值类型决定(......
  • java脚本模拟服务器内存溢出实战&服务器部署java项目
    一、背景:使用javaspringboot,实现linux服务器内存溢出情况。二、方案1、打包成war包,可以直接将war包部署在tomcat容器里2、springboot,打包成jar包。打的jar包,内置了tomcat,所以在服务器上,直接启jar包就行,没有必要放在tomcat容器里部署,在启动jar包时,可以配置线程池等。这......
  • Cause: java.sql.SQLException: Field 'id' doesn't have a default value Field 'id&
    报错内容: 是因为实体类文件中设置主键自增的类型不对导致的,建议再温习一下逐渐自增的类型以及使用方式我自己的实体类里面设置的IdType为auto,但是主键id是char类型的,还不是int数值类型,所以无法设置为自增 这里需要换成IdType.ID_WORKER_STR@ApiModelProperty(......
  • 探索Java中的并发编程:多线程同步与性能优化
    在后端开发领域,Java作为一门强大的编程语言,广泛应用于构建高性能和并发性能强大的应用程序。本文将深入探讨Java中的并发编程,重点关注多线程同步机制与性能优化策略。通过结合实际代码示例,为读者提供关于并发编程的深奥知识和实用方法。1.并发编程概述与原理并发编程是指多个线程......