首页 > 其他分享 >AES加密解密全流程演示__api基础使用

AES加密解密全流程演示__api基础使用

时间:2024-09-12 20:16:27浏览次数:1  
标签:__ AES String algorithm api System Cipher out

public static void main(String[] args) throws Exception {
        // 共同约定秘钥和加密算法
        String content = "你好,世界";
        // AES密钥长度通常为128、192或256位
        String key = "1234567812345678"; // 16字节*8
        String algorithm = "AES";
        
        System.out.println("\n-----------发送方-----------\n");

        Cipher cipher = Cipher.getInstance(algorithm);
        SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), algorithm);
        // 加密模式
        cipher.init(Cipher.ENCRYPT_MODE, keySpec);
        byte[] encryptBytes = cipher.doFinal(content.getBytes());
        String encryptText = new String(Base64.getEncoder().encode(encryptBytes)); // 密文
        System.out.println(encryptText);

        System.out.println("\n-----------接收方-----------\n");

        Cipher recieverCipher = Cipher.getInstance(algorithm);
        SecretKeySpec receiverSk = new SecretKeySpec(key.getBytes(), algorithm);
        // 解密模式
        recieverCipher.init(Cipher.DECRYPT_MODE, receiverSk);
        // 先将加密后的字符串解码回字节数据
        byte[] decodedBytes = Base64.getDecoder().decode(encryptText);
        byte[] plainBytes = recieverCipher.doFinal(decodedBytes);
        String plainText = new String(plainBytes); // 原文
        System.out.println(plainText);
    }

 

标签:__,AES,String,algorithm,api,System,Cipher,out
From: https://www.cnblogs.com/ashet/p/18410965

相关文章

  • USACO记录
    2019Dec9.4感觉没啥难度,C的思维很好,值得学习。A简单区间dp。\(f_{l,r}\)表示只在\([l,r]\)内部覆盖得到的最大权值,转移首先将两个相邻区间\([l,k],[k+1,r]\)拼起来,以及找到覆盖点区间\([l,k-1],[k+1,r],cov(k,l,r)\),其中\(cov\)可以\(n^3\)预处理。B考虑对于每......
  • 大模型代码对接(fetchEventSource、hightlight.js
    <template> <a-modal class="modal-container" style="min-width:1180px;" :visible="modalState.visible" :footer="null" :bodyStyle="{padding:0,borderRadius:'8px'}" :loading=&......
  • VRAY云渲染动画怎么都是图片?
    动画实际上是由一系列连续的静态图像(帧)组成的,当这些帧快速连续播放时,就形成了动画效果。每一帧都是一个单独的图片,需要单独渲染。云渲染农场的工作方式:1、用户将3D场景文件和动画设置上传到云渲染农场。2、云渲染农场的服务器会对动画的每一帧进行渲染,生成单帧图片。3、这些......
  • Java怎么把多个对象的list的数据合并
    1.示例一:创建几个包含Person对象的List,并将它们合并成一个新的List在Java中,将多个对象的List合并通常涉及到遍历这些List并将它们的元素添加到一个新的List中。这里,我将给出一个详细的代码示例,该示例将展示如何将多个包含相同类型对象的List合并成一个List。假设我们有一个简单......
  • C#中设置自定义控件工具箱图标
    在设计自定义控件时,系统默认生成的图标比较单一且难看,如何为控件设计自己的图标呢,这里给出了一种基于ToolBoxBitmap 属性设置自定义控件工具箱图标的方法。1、首先将图标文件名改为自定义控件名,如自定义控件类为: public partial class UserDefindControl: UserControl {......
  • 第十七讲 为什么这些SQL语句逻辑相同,性能却差异巨大?
    第十七讲:为什么这些SQL语句逻辑相同,性能却差异巨大?简概:引入:​ 在MySQL中,有很多看上去逻辑相同,但性能却差异巨大的SQL语句。对这些语句使用不当的话,就会不经意间导致整个数据库的压力变大。我今天挑选了三个这样的案例和你分享。希望再遇到相似的问题时,你可以做到举一反......
  • dotnet OpenXML SDK 添加 CoreFilePropertiesPart 的方法
    本文记录在OpenXMLSDK2.15版本下,为PPTX文件添加CoreFilePropertiesPart的方法,通过本文的方法可以正确且简单的添加core.xml文件到PPTX文件里当前的OpenXMLSDK存在已知问题,那就是默认情况下生成不包含core.xml文件,请参阅https://github.com/dotnet/Open-XML-SDK......
  • dotnet 测试在 UOS Linux 上使用 Process Start 打开文件的行为
    本文记录我在UOSLinux系统上使用Process.Start打开文件的行为使用UseShellExecute打开文本文件我放入了名为Test.txt的文件,然后使用下面代码尝试打开文件。实际测试可以正常打开usingSystem.Diagnostics;varfilePath="../Test.txt";Console.WriteLine($"文件......
  • UNO.Skia.Gtk 设置窗口尺寸变化方法
    本文记录一个简单的在UNO.Skia.Gtk应用里面,配置GTK平台修改窗口尺寸的方法为了全平台通用性,推荐是走定义接口加平台注入的方式。定义的接口如下publicinterfaceIWindowActivator{voidResizeMainWindow(Sizesize);}这里为了方便起见,直接使用静态属性注入方法,如......
  • dotnet 测试在 Linux 系统上的 Environment.GetFolderPath 行为
    由于Environment.GetFolderPath可以传入的参数里面,有许多都是Windows系统特有的,在Linux上不存在的,也没有映射对应的文件夹。本文将在WSLDebian和UOS系统上测试Environment.GetFolderPath行为测试使用Environment.SpecialFolder的各个枚举获取路径的代码如下......