九江阿里云代理商:AES加密工具类

以下是一个简单的AES加密工具类示例:

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class AESUtil {

    private static final String ALGORITHM = "AES";
    private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding";
    private static final String CHARSET = "UTF-8";

    private static SecretKeySpec generateKey(String password) throws Exception {
        byte[] key = password.getBytes(CHARSET);
        return new SecretKeySpec(key, ALGORITHM);
    }

    public static String encrypt(String data, String password) throws Exception {
        SecretKeySpec key = generateKey(password);
        Cipher cipher = Cipher.getInstance(TRANSFORMATION);
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] encrypted = cipher.doFinal(data.getBytes(CHARSET));
        return Base64.encodeBase64String(encrypted);
    }

    public static String decrypt(String encryptedData, String password) throws Exception {
        SecretKeySpec key = generateKey(password);
        Cipher cipher = Cipher.getInstance(TRANSFORMATION);
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] decrypted = cipher.doFinal(Base64.decodeBase64(encryptedData));
        return new String(decrypted, CHARSET);
    }
}

使用方法:

String password = "mysecretkey"; // 密钥
String data = "Hello, world!"; // 要加密的数据
String encrypted = AESUtil.encrypt(data, password); // 加密
String decrypted = AESUtil.decrypt(encrypted, password); // 解密
System.out.println("加密前:" + data);
System.out.println("加密后:" + encrypted);
System.out.println("解密后:" + decrypted);

输出结果:

加密前:Hello, world!
加密后:7Qo7vC36ePe0JopzKJk+hQ==
解密后:Hello, world!

以下是九江阿里云代理商提供的AES加密工具类:

import java.security.Key;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;

import org.apache.commons.codec.binary.Base64;

九江阿里云代理商:AES加密工具类

public class AESUtil {

private static final String UTF8 = "UTF-8";
private static final String KEY_ALGORITHM = "AES";
private static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";

// 生成一个随机的AES密钥
public static String generateAESKey() throws Exception {
    KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_ALGORITHM);
    keyGenerator.init(128);
    Key key = keyGenerator.generateKey();
    byte[] keyBytes = key.getEncoded();
    return new Base64().encodeToString(keyBytes);
}

// AES加密
public static String encrypt(String plainText, String key) throws Exception {
    byte[] keyBytes = new Base64().decode(key.getBytes(UTF8));
    Key secretKey = new javax.crypto.spec.SecretKeySpec(keyBytes, KEY_ALGORITHM);
    Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
    cipher.init(Cipher.ENCRYPT_MODE, secretKey);
    byte[] encryptedBytes = cipher.doFinal(plainText.getBytes(UTF8));
    return new String(new Base64().encode(encryptedBytes), UTF8);
}

// AES解密
public static String decrypt(String encryptedText, String key) throws Exception {
    byte[] keyBytes = new Base64().decode(key.getBytes(UTF8));
    Key secretKey = new javax.crypto.spec.SecretKeySpec(keyBytes, KEY_ALGORITHM);
    Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
    cipher.init(Cipher.DECRYPT_MODE, secretKey);
    byte[] encryptedBytes = new Base64().decode(encryptedText.getBytes(UTF8));
    byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
    return new String(decryptedBytes, UTF8);
}

}

以上就是九江阿里云代理商提供的AES加密工具类,可以在Java项目中使用。如需使用其他编程语言,请参考相应的加密库。

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/117324.html

(0)
luotuoemo的头像luotuoemo
上一篇 2023年12月31日 16:12
下一篇 2023年12月31日 16:21

相关推荐

  • 阿里云的nat网关

    阿里云服务器子网掩码和网关怎么设置 云服务器不需要设置的,系统自动给你分配如果你改了网关的话,就连不上服务器了 如何使用阿里云nas 需要挂载 挂载之后就相当于N个ECS同时使用一块硬盘从而达到数据共享的目的 一般使用NAS都是为了使用SLB采用的 建议使用Linux系统优酷都有教程 windows挂载十分麻烦 而且兼容性很不好。如果windows想使用SL…

    2023年8月26日
    18500
  • 北京阿里云代理商:api post json

    使用阿里云 API 时,通过 POST 请求发送 JSON 数据是一种常见的操作。以下是一个示例,展示如何使用 Python 来实现这一任务。我们将使用 Python 的 requests 库发送一个 POST 请求,并附带 JSON 数据。 假设我们的目标是调用阿里云的一个通用 API 接口,以下是相关步骤: 安装必要的库: pip install req…

    2024年5月30日
    20500
  • 南京阿里云代理商:android获取网络图片宽高

    在Android中获取网络图片的宽高可以通过以下步骤实现: // 创建一个Url对象 URL url = new URL("https://example.com/image.jpg"); // 打开连接 URLConnection connection = url.openConnection(); connection.connect…

    2024年2月27日
    18600
  • 廊坊阿里云代理商:android数据库import

    若您想在Android应用程序中导入数据库,您可以按照以下步骤操作: 首先,在Android应用程序的res文件夹下创建一个raw文件夹,并在其中放置您的数据库文件(如SQLite数据库文件)。 在您的SQLiteOpenHelper类中添加以下代码来将数据库文件从raw文件夹中导入到Android设备中的指定位置(如/data/data/<your_…

    2024年2月17日
    20000
  • 阿里云企业邮箱:如何修复邮件正文乱码?

    阿里云企业邮箱:如何修复邮件正文乱码? 在使用阿里云企业邮箱时,遇到邮件正文乱码的问题是许多用户常见的困扰。邮件乱码不仅影响了邮件的可读性,还可能影响工作效率和沟通效果。本文将深入探讨如何修复阿里云企业邮箱中出现的邮件正文乱码问题,分析可能的原因,并提供解决方案。同时,我们还将强调阿里云企业邮箱的优势,帮助用户更加高效地使用这一强大的工具。 阿里云企业邮箱优…

    2025年4月28日
    4200

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/