首页 > 其他分享 >AES/CBC/PKCS7Padding加密方式

AES/CBC/PKCS7Padding加密方式

时间:2024-08-09 17:41:19浏览次数:5  
标签:CBC AES String PKCS7Padding new Cipher cipher

引入jar包

      <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
            <version>1.56</version>
        </dependency>

@Test
@SneakyThrows
public void test01(){

try {
Security.addProvider(new BouncyCastleProvider());
String encryptedText = "myNa9ijJROB0GFQ8XtOeZDVz3SG3T85ZbklJj1Wfjteo6Y9LI/MxGa+NnJ5QnlIkszkaSVzoQHVzGtVLT8Q9LQ=="; // 加密的字符串
String key = "7faca8f987d3fe8279307deb98a6ceXX"; // 256位的密钥
// 解密
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);

// 将解密后的字节转换为字符串
String decryptedText = new String(decryptedBytes);
System.out.println("解密后的字符串: " + decryptedText);
} catch (Exception e) {
e.printStackTrace();
}
}

@Test
@SneakyThrows
public void test02(){
Security.addProvider(new BouncyCastleProvider());
String keyString = "7faca8f987d3fe8279307deb98a6ceXX";
String textToEncrypt = "{\"phone_md5\":\"64b534b1893bdb387d2712fe5ce8fcf3\",\"age\":30}";
SecretKeySpec secretKey = new SecretKeySpec(keyString.getBytes(StandardCharsets.UTF_8), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encrypted = cipher.doFinal(textToEncrypt.getBytes());
String s = Base64.getEncoder().encodeToString(encrypted);
System.out.println("加密结果:"+s);
}

标签:CBC,AES,String,PKCS7Padding,new,Cipher,cipher
From: https://www.cnblogs.com/qq376324789/p/18351122

相关文章

  • fpga图像处理实战-RGB转YCBCR(YUV)算法
    YCBCR        YCbCr是一种用于数字图像和视频的颜色空间。它将颜色分解为亮度(Y)和两个色度分量(Cb和Cr)。这种分解使得视频压缩和传输更加高效,因为人眼对亮度变化更敏感,而对色度变化较不敏感。        亮度(Y):亮度表示图像的灰度级别或光强度。它是RGB颜色空间中......
  • fpga图像处理实战-YCBCR转RGB
    计算公式    R=Y+1.402*(V-128)=Y+1.402*CR-1.402*128  G=Y-0.344*(U-128)-0.714*(V-128)=Y-0.344*CB-0.714*CR+1.058*128   B=Y+1.772*(U-128)=Y+1.772*CB-1.772*128FPGA实现`timescale1ns/1ps////Company://......
  • AES加密时,同时设置Key和KeySize 与 仅设置Key 加密得到的结果不同
    事故现场KeySize应该是Key的长度*8(单位是bit)当我设置Key为长度32的字节数组后,(断点可以看到此时KeySize=256)加密结果符合期望;当我既设置Key(未修改),又设置KeySize=256时,加密结果不同.源码publicvirtualbyte[]Key{get{......
  • 企知道 接口逆向:AES加密
    ......
  • Conductor & Maestro
    NetflixConductor:Amicroservicesorchestratorhttps://netflixtechblog.com/netflix-conductor-a-microservices-orchestrator-2e8d4771bf40NetflixConductor:InversionofControlforworkflowshttps://netflixtechblog.com/netflix-conductor-inversion-of-control-......
  • 使用 caesar sipher 加密和解密
    我需要符合所有要求的代码,以便我可以完成从某家公司获得推荐信的任务。我需要帮助。实际上我尝试过使用人工智能,但该公司正在使用人工智能探测器,如果它发现我在人工智能的帮助下完成了任务,那么我将不会获得任何证书,并且我将被该公司禁止10年。我需要人工编写的代码。......
  • 使用 AES-GCM 分块加密文件
    我想编写一个生成器,以给定大小的块来加密文件并一一返回块。我还想验证有效负载,因此我为此选择了AES-GCM。为什么我要分块加密而不是一次性加密整个文件?我通过网络发送这些块,因此我不是加密整个(可能很大)文件,将其存储在其他地方,然后在进行网络传输时再次对其进行分块,而是加密......
  • AES算法
    介绍AES(高级加密标准,AdvancedEncryptionStandard)是一种广泛使用的对称密钥加密算法,由比利时密码学家VincentRijmen和JoanDaemen设计,他们设计的算法最初被称为Rijndael。AES于2001年被美国国家标准与技术研究院(NIST)选为官方的加密标准,用以取代旧的DES标准。以下是AES算法的一......
  • ModuleNotFoundError:没有名为“pyaes”的模块 python 虚拟机
    在此处输入图像描述当我在启动python项目的虚拟机上构建某个工具时,几秒钟后会出现此消息。我已经尝试重新安装pyaes但无济于事。谁能帮我?非常感谢我已经尝试重新安装pyaes但无济于事,我搜索了tepyaes模块的十个路径,但我没有找到它,而我在另一台虚拟机上完成了......
  • 网络安全实验一 分组密码实验(AES加解密)
    本实验代码附在文末实验目的与要求:理解对称密码体制和分组密码算法的基本思想理解分组密码AES的基本原理实现AES的加解密过程,可以对各种文件(word、txt、mp3、jpg)进行加解密实现分组密码的密码分组链接工作模式与计算器工作模式实验环境:MicrosoftVisualStudio2022等......