java 3DES (DESede/ECB/PKCS5Padding) 加解密[通俗易懂]

java 3DES (DESede/ECB/PKCS5Padding) 加解密[通俗易懂]java3DES(DESede/ECB/PKCS5Padding)加解密

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

 代码如下:


import cn.hutool.core.convert.Convert;
import org.apache.commons.lang3.RandomStringUtils;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;

public class Util {

    private static final String key = RandomStringUtils.randomAlphanumeric(24);

    /**
     * 3DES加密
     *
     * @param data
     * @return
     * @throws Exception
     */
    public static String encrypt3DES(String data) throws Exception {
        //加密
        byte key_byte[] = key.getBytes();
        SecretKey secretKey = new SecretKeySpec(key_byte, "DESede");
        Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] bytes = cipher.doFinal(data.getBytes("utf-8"));
        String str = Convert.toHex(bytes);

        return str;
    }

    /**
     * 3DES解密
     *
     * @param data
     * @return
     * @throws Exception
     */
    public static String decrypt3DES(String data) throws Exception {
        //解密
        byte key_byte[] = key.getBytes();
        SecretKey secretKey = new SecretKeySpec(key_byte, "DESede");
        Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] bytes = cipher.doFinal(Convert.hexToBytes(data));
        String hex = Convert.toHex(bytes);
        String str = Convert.hexToStr(hex, Charset.forName("utf-8"));

        return str;
    }

    public static void main(String[] args) throws Exception {
        String str = "加解密测试!";
        System.out.println("随机key-----------> " + key);
        String encrypt3DES = encrypt3DES(str);
        System.out.println("加密-----------> " + encrypt3DES);
        String decrypt3DES = decrypt3DES(encrypt3DES);
        System.out.println("解密-----------> " + decrypt3DES);
    }
}

Jetbrains全家桶1年46,售后保障稳定

运行结果:

随机key-----------> vSEBYEGpBjfTseGyoaiVmUA1
加密-----------> 758d54430aec8c80b1f75b223dd8cd452639f1f1c9464440
解密-----------> 加解密测试!

ps:转载请注明出处

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213512.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • QT学习—使用多线程的两种方法(子类化QThread+子类化QObject)

    QT学习—使用多线程的两种方法(子类化QThread+子类化QObject)第一种方法:摘要Qt多线程方法1继承QThread1写一个继承于QThread的线程2QThread的几个函数quitexitterminate函数3正确的终止一个线程4如何正确启动一个线程41正确的启动一个全局线程和UI一直存在的线程42如何启动一个局部线程用完即释放的线程继承QThread的一些总结使用QObject实现多线的方法见:http://blog.csdn.net/czyt…

    2022年5月8日
    96
  • 查理德弗曼学习法

    查理德弗曼学习法费曼学习法的灵感源于诺贝尔物理奖获得者理查德·费曼(RichardFeynman),运用费曼技巧,你只需花上20分钟就能深入理解知识点,而且记忆深刻,难以遗忘。知识有两种类型,我们绝大多数人关注的都是错误的那类。第一类知识注重了解某个事物的名称。第二类知识注重了解某件事物。这可不是一回事儿。著名的诺贝尔物理学家理查德·费曼(RichardFeynman)能够理解这二者间的差别,这也是他成功最重要的原因之一。事实上,他创造了一种学习方法,确保他会比别人对事物了解的更透彻。费曼学习法可以简化为四个单词:C

    2022年6月14日
    37
  • 前端实现异步的几种方式_redux是什么

    前端实现异步的几种方式_redux是什么1.什么是Saga?实际上,这个术语出自康奈尔大学的一篇论文:http://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf最初这篇论文是为了解决分布式系统中的LLT(LongLivedTransaction),也就是长时运行事务的数据一致性问题的。这么说有点抽象,我们来举个具体的例子:假如你在一个在线订票系统上订了一张…

    2022年9月18日
    4
  • 苹果开发者学习界面

    苹果开发者学习界面Apple苹果开发者登录页面http://developer.apple.com/ios/manage/overview/index.actionIOS开发者http://developer.apple.com/ios苹果iTunesConnecthttps://itunesconnect.apple.com/苹果论坛https://devforums.apple.com/commu

    2022年9月20日
    2
  • spring cloud gateway 网关认证登录_golang 网关

    spring cloud gateway 网关认证登录_golang 网关网关作为系统的唯一流量入口,封装内部系统的架构,所有请求都先经过网关,由网关将请求路由到合适的微服务,所以,使用网关的好处在于:(1)简化客户端的工作。网关将微服务封装起来后,客户端只需同网关交互,而不必调用各个不同服务;(2)降低函数间的耦合度。一旦服务接口修改,只需修改网关的路由策略,不必修改每个调用该函数的客户端,从而减少了程序间的耦合性(3)解放开发人员把精力专注于业务逻辑的实现。由网关统一实现服务路由(灰度与ABTest)、负载均衡、访问控制、流控熔断降级等非业务相关功能

    2022年10月11日
    2
  • 三极管的导通条件总结[通俗易懂]

    三极管的导通条件总结[通俗易懂]对三极管放大作用的理解,切记一点:能量不会无缘无故的产生,所以,三极管一定不会产生能量。但三极管厉害的地方在于:它可以通过小电流去控制大电流。放大的原理就在于:通过小的交流输入,控制大的静态直流。假设三极管是个大坝,这个大坝奇怪的地方是,有两个阀门,一个大阀门,一个小阀门。小阀门可以用人力打开,大阀门很重,人力是打不开的,只能通过小阀门的水力打开。所以,平常的工作流程便是,每当放水

    2022年6月18日
    75

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号