首页 > 编程语言 >JAVA ASE 默认随机 sha1 key加密

JAVA ASE 默认随机 sha1 key加密

时间:2023-08-07 17:33:06浏览次数:34  
标签:AES sha1 JAVA String random ASE new byte SecureRandom

使用原始的方法

public static String EncryptEncode(String content, String... key) throws Exception {
        String encryptKey = "audaque2018";
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
        random.setSeed(encryptKey.getBytes());
        keyGenerator.init(128, random);
        SecretKey originalKey = keyGenerator.generateKey();
        byte[] rawByte = originalKey.getEncoded();
        SecretKey secretKey = new SecretKeySpec(rawByte, "AES");
        Cipher cipher = Cipher.getInstance("AES"); // AES/ECB/PKCS5Padding
        cipher.init(1, secretKey);
        byte[] byteEncode = content.getBytes("utf-8");
        byte[] bytesAes = cipher.doFinal(byteEncode);
        return new String((new BASE64Encoder()).encode(bytesAes));
    }

    public static String DecryptDecode(String content, String... key) throws Exception {
        String encryptKey = "audaque2018";
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
        random.setSeed(encryptKey.getBytes());
        keyGenerator.init(128, random);
        SecretKey originalKey = keyGenerator.generateKey();
        byte[] byteArray = originalKey.getEncoded();
        SecretKey secretKey = new SecretKeySpec(byteArray, "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(2, secretKey);
        byte[] byteContent = (new BASE64Decoder()).decodeBuffer(content);
        byte[] byteEncode = cipher.doFinal(byteContent);
        return new String(byteEncode, "utf-8");
    }

使用 hutools

 public static String invokeEncryptEncode(String content, String... key) throws NoSuchAlgorithmException {
        String encryptKey = "audaque2018";
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
        random.setSeed(encryptKey.getBytes());
        byte[] keyBytes = new byte[16];
        random.nextBytes(keyBytes);
        AES aes = SecureUtil.aes(keyBytes);
        byte[] encryptedBytes = aes.encrypt(content.getBytes());
        String resultEncode = Base64Encoder.encode(encryptedBytes);

        return resultEncode;
    }

    public static String invokeDecryptDecode(String encryptedContent, String... key) throws NoSuchAlgorithmException {
        String encryptKey = "audaque2018";
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
        random.setSeed(encryptKey.getBytes());
        byte[] keyBytes = new byte[16];
        random.nextBytes(keyBytes);
        AES aes = SecureUtil.aes(keyBytes);
        byte[] encryptedBytes = Base64Decoder.decode(encryptedContent);
        byte[] decryptedBytes = aes.decrypt(encryptedBytes);
        return new String(decryptedBytes);
    }

标签:AES,sha1,JAVA,String,random,ASE,new,byte,SecureRandom
From: https://www.cnblogs.com/guanchaoguo/p/17611999.html

相关文章

  • 关于Java的IO流开发
    IO概述回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了。那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据读出来继续使用呢?其实要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他......
  • java @Value重配置文件中获取不同的值
    在Java中,使用`@Value`注解可以从配置文件中获取不同的值。`@Value`注解可以用于类的字段或方法的参数上。首先,确保在Spring应用程序中正确配置了配置文件。通常,配置文件的名称为`application.properties`或`application.yaml`,并位于类路径下。接下来,您可以在需要获取配置值的类或方......
  • Java后端05(初识MyBatis)
    Mybatis举个小栗子mybatis配置文件(XML配置文件)<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!--通过这个配置文......
  • Java后端06(代理模式)
    代理模式​ spring中就使用了代理模式,Java中的代理模式分为一下两种静态代理:最简单,但是每次修改都需要重新编译动态代理:分为两种(jdk动态代理--通过接口实现来进行代理&cglib动态代理--通过子类继承来实现代理)静态代理​ 静态代理致命问题:代理对象必须提前编译好,所有代......
  • 深入探索JavaScript的魅力与奇妙之处
    大家好!今天我想分享一些关于JavaScript(简称JS)的思考和体会。作为前端开发中最重要的语言之一,JS不仅具备强大的功能,还有着许多令人着迷的特性。首先,JavaScript的灵活性是其最引人注目的特点之一。它允许我们以多种方式解决问题,无论是面向对象编程、函数式编程还是响应式编程,JS都能......
  • Java 远程连接 SQLite 数据库
    Java可以使用JDBCAPI来连接SQLite数据库。但是,SQLite不支持远程连接,因为它是一种文件数据库,需要直接访问数据库文件。如果您需要从远程位置访问SQLite数据库,可以将SQLite数据库文件放在共享文件夹中,并将该文件夹映射到本地计算机上。然后,您可以在本地计算机上使用JDBC......
  • Java设计模式的七大基本原则
    设计模式是为了让程序(软件)具有更好的代码重用性,可读性,可扩展性,可靠性,使程序呈现高内聚,低耦合的特性设计模式的原则其实就收是程序员在编写时,应当遵守的原则,也是各种模式的基础(Java设计模式的七大基本原则)一、单一职责原则<A>对类来说的,即一个类应只负责一项职责,如果A负责......
  • 【Java设计模式004】建造者模式
    大家好,个人gzh是大猪和小猪的小家,我们的gzh是朝阳三只大明白,满满全是干货,分享近期的学习知识以及个人总结(包括读研和IT),跪求一波关注,希望和大家一起努力、进步!!概述首先来看一个例子,假设我们需要建造一个房子,那么必须建造墙、屋顶、地板、门…如果还需要游泳池、健身室,那么该怎么办呢......
  • Java 图片、文件 Base64 互转
    Java图片、文件Base64互转packagecom.thoth.his.base.util;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Base64;publicclassImageUtil{publicStringFileToBase64(StringfilePath)thro......
  • 【转】JAVA中list和原生数组的互相转换
    经常用经常忘转自 javaList和数组相互转换的方法总结_javalist转为数组_great-sun的博客-CSDN博客Java中,可以通过以下方法将List转换为数组:List<String>list=newArrayList<>();String[]array=list.toArray(newString[0]);在这个例子中,我们将一个String类型的List......