首页 > 编程语言 >java加密解密

java加密解密

时间:2023-10-25 10:47:37浏览次数:35  
标签:加密 String text 解密 extracted key import java transformation

package com.pg;

import com.pg.utils.CommonUtils;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
 
 
public class desOrAesDemo {
    public static void main(String[] args) throws Exception {
        String text = "13211112222";
 
        String key = "12345678";//des必须8字节
        // 算法/模式/填充  默认 DES/ECB/PKCS5Padding
        String transformation = "DES";
 
        String key1 = "1234567812345678";//aes必须16字节
        String transformation1 = "AES";
 
        String key2 = "123456781234567812345678";//TripleDES使用24字节的key
        String transformation2 = "TripleDes";

        String extracted = CommonUtils.extracted(text, key, transformation, true);
        System.out.println("DES加密:" + extracted);
        String extracted1 = CommonUtils.extracted(extracted, key, transformation, false);
        System.out.println("解密:" + extracted1);
 
//        String extracted = extracted(text, key, transformation, true);
//        System.out.println("DES加密:" + extracted);
//        String extracted1 = extracted(extracted, key, transformation, false);
//        System.out.println("解密:" + extracted1);
 
 
//        String extracted2 = extracted(text, key1, transformation1, true);
//        System.out.println("AES加密:" + extracted2);
//        String extracted3 = extracted(extracted2, key1, transformation1, false);
//        System.out.println("解密:" + extracted3);
//
//        String extracted4 = extracted(text, key2, transformation2, true);
//        System.out.println("Triple Des加密:" + extracted4);
//        String extracted5 = extracted(extracted, key2, transformation2, false);
//        System.out.println("解密:" + extracted5);
    }
 
    /**
     * @param text           明文/base64密文
     * @param key            密钥
     * @param transformation 转换方式
     * @param mode           加密/解密
     */
//    private static String extracted(String text, String key, String transformation, boolean mode) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
//        Cipher cipher = Cipher.getInstance(transformation);
//        //    key          与给定的密钥内容相关联的密钥算法的名称
//        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), transformation);
//        //Cipher 的操作模式,加密模式:ENCRYPT_MODE、 解密模式:DECRYPT_MODE、包装模式:WRAP_MODE 或 解包装:UNWRAP_MODE)
//        cipher.init(mode ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE, secretKeySpec);
//        byte[] bytes = cipher.doFinal(mode ? text.getBytes(StandardCharsets.UTF_8) : Base64.decode(text));
//        return mode ? Base64.encode(bytes) : new String(bytes);
//    }
 
 
}

标签:加密,String,text,解密,extracted,key,import,java,transformation
From: https://www.cnblogs.com/csjoz/p/17786555.html

相关文章

  • 合并两个有序数组(JAVA)
    题外话在我个人的思路视角里,遇到这种排序问题总是会在脑子里产生一些画面感。让我将这些问题奔着一种奇妙的思路而去,也就是在我脑子里很简答,但难以在代码上复现,我觉得从本我的角度讲我也许天生不适合当一个高级程序员hhhh,但!我命由我不由天!题解题目给你两个按非递减顺序排列......
  • Java文件上传方式
    Java实现文件上传的方式有以下几种:1.通过JavaServlet实现文件上传:在Servlet中,可以通过HttpServletRequest对象的getPart()方法获取文件的Part对象,然后通过Part对象的write()方法将文件写入服务器。2.使用ApacheCommonsFileUpload库:这个库提供了一个简单的API,可以轻松地将文件......
  • Java 基础 05~ 12
    Java基础05~121.Java类型转换inti=128;byteb=(byte)i;// 格式System.out.println(i);//128System.out.println(b);//-128内存溢出​ PS:注意转换的等级,从低位往高位转没问题,从高位往低位转可能内存溢出2.变量、常量、作用域inta=1;Stringn......
  • Java服务总在半夜挂,背后的真相竟然是...
    写在前面最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了问题排查问题复现为了复现该问题,写了个springboot的demo部署在测试环境,其中demo里只做了helloworld功能,应用类型为web_tomcat(war......
  • 3种方法,用Java找出两个List中的重复元素
    本文分享自华为云社区《如何用Java找出两个List中的重复元素,读这一篇就够了》,作者:努力的阿飞。在Java编程中,我们经常需要找出两个列表(List)中的重复元素。在本文中,我们将探讨三种方法来实现这一目标。方法一:使用HashSetJava中的HashSet是一个不允许有重复元素的集合。我们可以......
  • C# 加密–RSA前端与后台的加密&解密
    1.在线RSA加密,选用PKCS#1来生成公钥与私钥  http://web.chacuo.net/netrsakeypair2.下载前端JS框架http://travistidwell.com/jsencrypt/3.流程图 加解密过程:先从网站上生成publicKey与privateKey第一步返回publicKey前端,用来对password等敏感字段的加密。......
  • Java队列Queue简述
    概述​ Queue是java中实现队列的接口,它总共只有6个方法,我们一般只用其中3个就可以了。Queue的实现类有LinkedList和PriorityQueue。最常用的实现类是LinkedList。Queue的6个方法分类抛出异常返回特殊值插入add(e)offer(e)删除remove()poll()检查element(......
  • java学习-二维数组&面向对象
    动态初始化格式数据类型[][]变量名=new数据类型[m][n]m表示这个二位数组可以存放多少个以为数组n表示里面的每个一维数组可以存放多少个元素比如int[][]arr=new[3][2]这个就代表里面有3个一维数组,每个一维数组可以存放2个元素存数据arr[0][0]=11arr[0][1]=......
  • javaweb第11章源码
    javaweb第11章源码下载链接:https://wwpv.lanzoue.com/ifkAa1crixqd文件结构CHAPTER11│.classpath│.project│├─.settings│.jsdtscope│org.eclipse.jdt.core.prefs│org.eclipse.wst.common.component│org.eclipse.wst.common.proje......
  • JavaScript知识点
    有哪些数据类型根据JavaScript中的变量类型传递方式,分为基本数据类型和引用数据类型两大类七种。基本数据类型包括Undefined、Null、Boolean、Number、String、Symbol(ES6新增)六种。引用数据类型只有Object—种,主要包括对象、数组和函数。基本数据类型和引用数据类型的区别两者......