您的位置:首页 > 财经 > 金融 > 数据加密-AES数据加密WPF程序

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

2024/11/18 10:18:46 来源:https://blog.csdn.net/weixin_67244432/article/details/141054030  浏览:    关键词:数据加密-AES数据加密WPF程序

 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;}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com