数据加密-AES数据加密WPF程序

news2024/9/22 1:20:39

 AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准与技术研究院(NIST)于2001年发布。AES以其高效、安全的特点,在数据加密领域占据了重要地位。

 

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="50"/>
        <RowDefinition Height="350"/>
        <RowDefinition Height="50"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="0">
        <TextBlock Text="密码转译" FontSize="20" FontWeight="Bold" Margin="10"/>
    </Grid>
    <Grid Grid.Row="1">
        <Grid>
            <Grid.RowDefinitions >
                <RowDefinition Height="10*"/>
                <RowDefinition Height="70*"/>
                <RowDefinition Height="50*"/>
                <RowDefinition Height="80*"/>
                <RowDefinition Height="120*"/>
                <RowDefinition Height="60*"/>

            </Grid.RowDefinitions>

            <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                <TextBlock Text="源码"  Margin="0,6,5,0"  FontSize="15" FontWeight="Bold"/>
                <TextBox Name="InPutA" Width="210" Height="30" Margin="0,0,15,0" VerticalContentAlignment="Center"/>
            </StackPanel>
            <StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                <TextBlock Text="解密"  Margin="0,6,5,0"  FontSize="15" FontWeight="Bold"/>
                <TextBox Name="OutPutB" Width="210" Height="30" Margin="0,0,15,0" VerticalContentAlignment="Center"/>

            </StackPanel>

            <StackPanel Grid.Row="3" Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
                <Button Content="加密"  Background="#0047AB" Foreground="White"  FontSize="15"  HorizontalAlignment="Right"  
                        Width="200" Height="27" Margin="0,0,0,0" BorderThickness="0"
                        Click="EncryptCommande"/>
                <Button Content="解密"  Background="#00ad43" Foreground="White"  FontSize="15"  HorizontalAlignment="Right"  
                        Width="200" Height="27" Margin="0,5,0,0" BorderThickness="0"
                        Click="DecryptCommande"/>
            </StackPanel>

            <StackPanel Grid.Row="4" Height="30" Width="260" Orientation="Horizontal"  VerticalAlignment="Bottom" Margin="0 0 0 10">
                <Button Width="40" Click="P1" Content="P1" Foreground="#c8c8c8" BorderThickness="0" Background="#f8f8f8"  Margin="25 0 15 0"/>
                <Button Width="40" Click="P2" Content="P2" Foreground="#c8c8c8" BorderThickness="0" Background="#f8f8f8"  Margin="0 0 15 0"/>
                <Button Width="40" Click="P3" Content="P3" Foreground="#c8c8c8" BorderThickness="0" Background="#f8f8f8"  Margin="0 0 15 0"/>
                <Button Width="40" Click="P4" Content="Rand" Foreground="#c8c8c8" BorderThickness="0" Background="#f8f8f8"  Margin="0 0 15 0"/>
            </StackPanel>


            <StackPanel Grid.Row="5">
                <StackPanel  Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                    <TextBlock Text="KEY:"  Margin="0,2,5,0"  FontSize="10" Foreground="#808080"/>
                    <TextBox Name="Key" Width="210" Height="17" Margin="0,0,15,0" VerticalContentAlignment="Center" />
                </StackPanel>
                <StackPanel  Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                    <TextBlock Text="  I V:"  Margin="0,8,5,0"  FontSize="10" Foreground="#808080"/>
                    <TextBox Name="IV" Width="210" Height="17" Margin="0,6,15,0" VerticalContentAlignment="Center"/>
                </StackPanel>
            </StackPanel>
        </Grid>
    </Grid>

    <TextBox Grid.Row="2" Name="Time" Height="17" Width="200" Margin="0 10 15 15"  FontSize="13" HorizontalAlignment="Right" BorderThickness="0" HorizontalContentAlignment="Right"/>

</Grid>
 public partial class MainWindow : Window
 {

     private DispatcherTimer _timer;
     public MainWindow()
     {
         InitializeComponent();
         _timer = new DispatcherTimer();
         _timer.Interval = TimeSpan.FromSeconds(0.5); // 每0.5秒切换一次颜色  
         _timer.Tick += Timer_Tick; // 设置Tick事件处理程序  
         _timer.Start(); // 启动定时器 


     }

     private void Timer_Tick(object sender, EventArgs e)
     {
         Time.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
         
     }

     private void EncryptCommande(object sender, RoutedEventArgs e)
     {
         byte[] key = Encoding.UTF8.GetBytes(Key.Text);
         byte[] iv = Encoding.UTF8.GetBytes(IV.Text);
         if (key.Length != 32) 
         {
             MessageBox.Show("Key错误\n请输入32位数字AES密钥", "警告");
         }else
         {
             if (iv.Length != 16) {
                 MessageBox.Show("IV错误\n请输入16位数字IV", "警告");
             }
             else
             {
                 // 输入的15位数字  
                 string input = InPutA.Text;

                 // 加密  
                 string encryptedText = Encrypt(input, key, iv);
                 OutPutB.Text = encryptedText;
             }
         }


        

     }
     private void DecryptCommande(object sender, RoutedEventArgs e)
     {
         byte[] key = Encoding.UTF8.GetBytes(Key.Text);
         byte[] iv = Encoding.UTF8.GetBytes(IV.Text);
         if (key.Length != 32)
         {
             MessageBox.Show("Key错误\n请输入32位数字AES密钥", "警告");
         }
         else
         {
             if (iv.Length != 16)
             {
                 MessageBox.Show("IV错误\n请输入16位数字IV", "警告");
             }
             else
             {
                 string input = InPutA.Text;
                 Regex regex = new Regex(@"[\u4e00-\u9fa5]+");
                 if (regex.IsMatch(input))
                 {
                     MessageBox.Show("输入错误\n待破解内容含有未知字符", "警告");
                 }
                 else
                 {
                     //解密  
                     string decryptedText = Decrypt(input, key, iv);
                     OutPutB.Text = decryptedText;
                 }



                
             }
         }
     }


     static string Encrypt(string plainText, byte[] Key, byte[] IV)
     {
         byte[] encrypted;

         using (Aes aesAlg = Aes.Create())
         {
             aesAlg.Key = Key;
             aesAlg.IV = IV;

             ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

             using (MemoryStream msEncrypt = new MemoryStream())
             {
                 using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                 {
                     using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                     {
                         swEncrypt.Write(plainText);
                     }
                     encrypted = msEncrypt.ToArray();
                 }
             }
         }

         return Convert.ToBase64String(encrypted);
     }

     static string Decrypt(string cipherText, byte[] Key, byte[] IV)
     {
         cipherText = cipherText.Replace(" ", "+"); // 处理Base64中的空格问题  

         byte[] cipherBytes = Convert.FromBase64String(cipherText);

         using (Aes aesAlg = Aes.Create())
         {
             aesAlg.Key = Key;
             aesAlg.IV = IV;

             ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

             using (MemoryStream msDecrypt = new MemoryStream(cipherBytes))
             {
                 using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                 {
                     using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                     {
                         return srDecrypt.ReadToEnd();
                     }
                 }
             }
         }
     }

     private void P1(object sender, RoutedEventArgs e)
     {
         Key.Text = "12345678901234567890123456789012";
         IV.Text = "1234567890123456";
     }
     private void P2(object sender, RoutedEventArgs e)
     {
         Key.Text = "12345678901234567890123456789012";
         IV.Text = "1234567890123456";
     }
     private void P3(object sender, RoutedEventArgs e)
     {
         Key.Text = "12345678901234567890123456789012";
         IV.Text = "1234567890123456";
     }
     private void P4(object sender, RoutedEventArgs e)
     {
         Key.Text = DigitalGeneration(32);
         IV.Text = DigitalGeneration(16);
     }

     static string DigitalGeneration(int A)
     {
         Random rand = new Random();
         StringBuilder sb = new StringBuilder(A);  
         for (int i = 0; i < A; i++){
             sb.Append(rand.Next(0, 10));}
         string randomNumbers = sb.ToString(); 
         return randomNumbers;
     }
 }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1994324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

定期检查m000是否消耗pga

偶然发现一个库的m000占用pga较高&#xff0c;导致ora-4036问题 sho parameter ga 看看当前参数 好像是bug 需要定期检查 select to_char(sysdate,yyyy-mm-dd hh24:mi:ss)riqi from dual;select round(sum(PGA_ALLOC_MEM)/1024/1024,2) "Total PGA Allocated (Mb)&q…

数据可视化(医疗数据)

目 录 第1章 绪 论 1 1.1 课题背景及研究目的 1.2 课题研究内容 第2章 课题概要及关键技术 2.1 课题概要 2.2 数据说明 2.3 关键技术 第3章 数据分析 3.1 数据统计分析 3.2 可视化分析 第4章 数据建模 4.1 数据预处理 4.2 模型构建 第5章 模型评估与应用 5.1 模型…

App广告投放新选择:Xinstall,让数据监测变得简单又高效

在App推广的战场上&#xff0c;广告投放是夺取用户心智的重要手段。然而&#xff0c;广告主们常常面临一个难题&#xff1a;如何准确衡量广告投放的效果&#xff1f;如何挖掘出有价值的用户来源和优质的投放渠道&#xff1f;这时候&#xff0c;你就需要一款强大的广告效果监测工…

基于Hadoop的超市进货推荐系统设计与实现【springboot案例项目】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍系统分析系统设计数据表设计表4-1&#xff1a;关于我们表4-2&#xff1a;用户表4-3&#xff1a;管理员表表4-4&#xff1a;token表表4-5&#xff1a;系统简介表4-6&#xff1a;收藏…

大数据-72 Kafka 高级特性 稳定性-事务 (概念多枯燥) 定义、概览、组、协调器、流程、中止、失败

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Ansys Mechanical|如何用好远程点(Remote Points)

一&#xff0e;什么是远程点&#xff1f; 当你定义载荷、约束和接触的作用域时&#xff0c;一般习惯于采用诸如直接选择模型或是通过模型的自定义截面等方法。 实际上&#xff0c;远程点也是一种设置远程边界条件作用域的方法。远程边界条件包括&#xff1a; 结构分析和温度分…

FPGA开发——IP核RAM的调用(双端口)

一、简介 在上一篇文章中我们对于单端口的RAM调用进行了一个简单的介绍和相关应用&#xff0c;在这篇文章当中我们对于双端口的RAM进行介绍和调用&#xff0c;在调用程度上来说&#xff0c;双端口RAM是单端口RAM的一个进阶。 双端口RAM分类 简单双口 RAM:一组读数据和读地址线…

【Linux】系列入门摘抄笔记-1-基本概念

一、基本概念 1. Linux系统 linux系统的发行版:内核+外围软件(文件系统、系统软件、应用软件)。 由于Linux内核是开源的,GUN工程中的软件也是开源的,所以许多组织和企业就嗅到了商机,他们将Linux内核与各种软件以及说明文档包装起来,并提供安装界面和管理工具等,这就…

如何让环保展厅不再沉闷?互动投影技术的创新应用解答!

随着城市化进程的加速&#xff0c;垃圾、污染等问题已成为影响城市环境的重要因素&#xff0c;为了解决这些问题&#xff0c;许多城市开始推行垃圾分类政策&#xff0c;同时完善垃圾分类收集、运输和处理的设施&#xff0c;为垃圾分类处理提供了硬件支持&#xff0c;此外&#…

【漏洞复现】某赛通电子文档安全管理系统 MultiServerAjax SQL注入漏洞

0x01 产品简介 某赛通电子文档安全管理系统&#xff08;简称&#xff1a;CDG&#xff09;是一款电子文档安全加密软件&#xff0c;该系统利用驱动层透明加密技术&#xff0c;通过对电子文档的加密保护&#xff0c;防止内部员工泄密和外部人员非法窃取企业核心重要数据资产&…

理解 Python 的全局解释器锁 (GIL)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

大数据安全规划总体方案(45页PPT)

方案介绍&#xff1a; 大数据安全规划总体方案的制定&#xff0c;旨在应对当前大数据环境中存在的各类安全风险&#xff0c;包括但不限于数据泄露、数据篡改、非法访问等。通过构建完善的安全防护体系&#xff0c;保障大数据在采集、存储、处理、传输、共享等全生命周期中的安…

书生.浦江大模型实战训练营——(四)书生·浦语大模型全链路开源开放体系

最近在学习书生.浦江大模型实战训练营&#xff0c;所有课程都免费&#xff0c;以关卡的形式学习&#xff0c;也比较有意思&#xff0c;提供免费的算力实战&#xff0c;真的很不错&#xff08;无广&#xff09;&#xff01;欢迎大家一起学习&#xff0c;打开LLM探索大门&#xf…

60、排列序列,61、旋转链表——LeetCode

60、排列序列 题目 给出集合 [1,2,3,...,n]&#xff0c;其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况&#xff0c;并一一标记&#xff0c;当 n 3 时, 所有排列如下&#xff1a; "123" "132" "213" "231" "312…

c#--有关DataGridView表格控件绑定数据源后的无数据、无法更新、闪烁及如何绑定图片等问题的总结

使用绑定数据源的方式绑定数据 1.DataGridview.Rows.Clear()&#xff0c;提示“不能清除此列表”。 用数据源绑定的DataGridView不能用Rows.Clear()清除&#xff0c;手动添加的是能够用clear()的。所以将datasource设置为null就可以清空数据。 2.DataSource为NULL&#xff0…

IP地址封装类(InetAddress类)

文章目录 前言一、IP地址是什么&#xff1f;二、IP地址封装类 1.常用方法2.实操展示总结 前言 当我们想要获取到通信对方的IP地址、主机地址等信息时&#xff0c;我们可以使用InetAddress类。InetAddress类在java的net包中。 一、IP地址是什么&#xff1f; IP地址 (Internet Pr…

人工智能算法岗找实习经验(一)简历撰写

首先分享简历撰写&#xff0c;下面简历仅供参考。 分为教育经历、个人能力、项目经历和竞赛经历4个部分。因为找的是算法岗&#xff0c;所以没有涉及太多技术和项目之外的东西。 教育经历 教育经历就是简单介绍下大学、专业、GPA还有就是和人工智能算法岗相关的专业课。 个…

【Python-实操】LabelMe to YOLOv8 Converter

LabelMe to YOLOv8 Converter 这是一个 Python 脚本&#xff0c;用于将 LabelMe 标注工具导出的 JSON 文件转换为 YOLOv8 格式的标注文件&#xff0c;并同时在图像上绘制标注的多边形。 功能 读取 LabelMe JSON 文件。解码并显示图像。从 classes.txt 文件加载类别标签。将多…

超有效!这样选的宠物空气净化器真能去浮毛?一款家电助力呼吸道

我那哥们儿&#xff0c;最近家里多了个毛茸茸的小成员——一只小猫。他对这猫好得不得了&#xff0c;俩人几乎是形影不离。可问题来了&#xff0c;小猫一长大&#xff0c;那毛啊&#xff0c;掉得满屋子都是。哥们儿最近就老抱怨&#xff0c;说晚上睡觉喉咙不舒服&#xff0c;问…

LVS是什么?以及LVS-NAT以及DR模式实验

目录 NAT LVS LVS集群的类型&#xff1a; LVS-NAT模式实验 环境准备&#xff1a; 实验步骤&#xff1a; LVS-DR模式实验 题目&#xff1a; 环境准备&#xff1a; 实验步骤&#xff1a; LVS-防火墙标签解决轮询调度问题 环境准备&#xff1a; 实验步骤&#xff1…