<Window x:Class="CrazyCoder.Views.SecurityWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="加密解密" Height="750" Width="1100" WindowStartupLocation="CenterScreen">
<Window.Resources>
<Style x:Key="FuncButton" TargetType="Button">
<Setter Property="Width" Value="110"/>
<Setter Property="Height" Value="46"/>
<Setter Property="Margin" Value="3"/>
<Setter Property="FontSize" Value="13"/>
</Style>
<Style x:Key="CodeTextBox" TargetType="TextBox">
<Setter Property="FontFamily" Value="Consolas"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="AcceptsReturn" Value="True"/>
<Setter Property="AcceptsTab" Value="True"/>
<Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="HorizontalScrollBarVisibility" Value="Auto"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="#D0D0D0"/>
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
<Style x:Key="GroupBorder" TargetType="Border">
<Setter Property="BorderBrush" Value="#D0D0D0"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Margin" Value="0,0,0,4"/>
</Style>
<Style x:Key="OptionRadioButton" TargetType="RadioButton">
<Setter Property="Margin" Value="4,0,8,0"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="OptionCheckBox" TargetType="CheckBox">
<Setter Property="Margin" Value="4,0,8,0"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</Window.Resources>
<Grid Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="240"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- 左侧:功能按钮区 -->
<Border Grid.Column="0" BorderBrush="#D0D0D0" BorderThickness="1" Margin="0,0,4,0">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
<WrapPanel Orientation="Horizontal" Margin="4">
<Button Content="HEX编码" Style="{StaticResource FuncButton}" Command="{Binding HexEncodeCommand}"/>
<Button Content="HEX解码" Style="{StaticResource FuncButton}" Command="{Binding HexDecodeCommand}"/>
<Button Content="Base64编码" Style="{StaticResource FuncButton}" Command="{Binding Base64EncodeCommand}"/>
<Button Content="Base64解码" Style="{StaticResource FuncButton}" Command="{Binding Base64DecodeCommand}"/>
<Button Content="MD5_32" Style="{StaticResource FuncButton}" Command="{Binding MD5_32Command}"/>
<Button Content="MD5_16" Style="{StaticResource FuncButton}" Command="{Binding MD5_16Command}"/>
<Button Content="SHA1" Style="{StaticResource FuncButton}" Command="{Binding SHA1Command}"/>
<Button Content="SHA256" Style="{StaticResource FuncButton}" Command="{Binding SHA256Command}"/>
<Button Content="SHA384" Style="{StaticResource FuncButton}" Command="{Binding SHA384Command}"/>
<Button Content="SHA512" Style="{StaticResource FuncButton}" Command="{Binding SHA512Command}"/>
<Button Content="CRC_32" Style="{StaticResource FuncButton}" Command="{Binding CRC_32Command}"/>
<Button Content="CRC_16" Style="{StaticResource FuncButton}" Command="{Binding CRC_16Command}"/>
<Button Content="RSA加密" Style="{StaticResource FuncButton}" Command="{Binding RSAEncryptCommand}"/>
<Button Content="RSA解密" Style="{StaticResource FuncButton}" Command="{Binding RSADecryptCommand}"/>
<Button Content="DSA签名" Style="{StaticResource FuncButton}" Command="{Binding DSASignCommand}"/>
<Button Content="DSA验证" Style="{StaticResource FuncButton}" Command="{Binding DSAVerifyCommand}"/>
<Button Content="Url编码" Style="{StaticResource FuncButton}" Command="{Binding UrlEncodeCommand}"/>
<Button Content="Url解码" Style="{StaticResource FuncButton}" Command="{Binding UrlDecodeCommand}"/>
<Button Content="Html编码" Style="{StaticResource FuncButton}" Command="{Binding HtmlEncodeCommand}"/>
<Button Content="Html解码" Style="{StaticResource FuncButton}" Command="{Binding HtmlDecodeCommand}"/>
<Button Content="时间戳" Style="{StaticResource FuncButton}" Command="{Binding TimestampCommand}"/>
<Button Content="机器信息" Style="{StaticResource FuncButton}" Command="{Binding ComputerInfoCommand}"/>
<Button Content="雪花Id" Style="{StaticResource FuncButton}" Command="{Binding SnowflakeCommand}"/>
<Button Content="JWT令牌" Style="{StaticResource FuncButton}" Command="{Binding JwtTokenCommand}"/>
<Button Content="版本号" Style="{StaticResource FuncButton}" Command="{Binding VersionCommand}"/>
<Button Content="TraceId" Style="{StaticResource FuncButton}" Command="{Binding TraceIdCommand}"/>
<Button Content="MD5破解" Style="{StaticResource FuncButton}" Command="{Binding Md5CrackCommand}" Background="#FFF3E0"/>
<Button Content="AES加密" Style="{StaticResource FuncButton}" Command="{Binding AesEncryptCommand}" Background="#E8F5E9"/>
<Button Content="AES解密" Style="{StaticResource FuncButton}" Command="{Binding AesDecryptCommand}" Background="#E8F5E9"/>
<Button Content="DES加密" Style="{StaticResource FuncButton}" Command="{Binding DesEncryptCommand}" Background="#E8F5E9"/>
<Button Content="DES解密" Style="{StaticResource FuncButton}" Command="{Binding DesDecryptCommand}" Background="#E8F5E9"/>
</WrapPanel>
</ScrollViewer>
</Border>
<!-- 右侧:原文、密码、结果 -->
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<!-- 原文区 -->
<Border Grid.Row="0" Style="{StaticResource GroupBorder}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="原文" FontWeight="Bold" Margin="4,2" VerticalAlignment="Center"/>
<RadioButton Grid.Column="1" Content="字符串" Style="{StaticResource OptionRadioButton}"
IsChecked="{Binding IsSourceString}" GroupName="SourceFormat"/>
<RadioButton Grid.Column="2" Content="HEX" Style="{StaticResource OptionRadioButton}"
IsChecked="{Binding IsSourceHex}" GroupName="SourceFormat"
IsEnabled="{Binding SourceHexEnabled}"/>
<RadioButton Grid.Column="3" Content="Base64" Style="{StaticResource OptionRadioButton}"
IsChecked="{Binding IsSourceBase64}" GroupName="SourceFormat"
IsEnabled="{Binding SourceBase64Enabled}"/>
<Button Grid.Column="5" Content="上下互换" Command="{Binding ExchangeCommand}"
MinWidth="80" Height="28" Margin="0,0,4,0"/>
</Grid>
<TextBox Grid.Row="1" x:Name="txtSource"
Text="{Binding SourceText, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource CodeTextBox}" MinHeight="80"/>
</Grid>
</Border>
<!-- 密码区 -->
<Border Grid.Row="1" Style="{StaticResource GroupBorder}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="密码 / 时间基准" FontWeight="Bold" Margin="4,2" VerticalAlignment="Center"/>
<RadioButton Grid.Column="1" Content="字符串" Style="{StaticResource OptionRadioButton}"
IsChecked="{Binding IsPassString}" GroupName="PassFormat"/>
<RadioButton Grid.Column="2" Content="HEX" Style="{StaticResource OptionRadioButton}"
IsChecked="{Binding IsPassHex}" GroupName="PassFormat"/>
<RadioButton Grid.Column="3" Content="Base64" Style="{StaticResource OptionRadioButton}"
IsChecked="{Binding IsPassBase64}" GroupName="PassFormat"/>
</Grid>
<TextBox Grid.Row="1" Text="{Binding PassText, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource CodeTextBox}" MinHeight="50"/>
</Grid>
</Border>
<!-- 结果区 -->
<Border Grid.Row="2" Style="{StaticResource GroupBorder}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="结果" FontWeight="Bold" Margin="4,2" VerticalAlignment="Center"/>
<CheckBox Grid.Column="1" Content="字符串" Style="{StaticResource OptionCheckBox}"
IsChecked="{Binding IsResultString}"/>
<CheckBox Grid.Column="2" Content="HEX" Style="{StaticResource OptionCheckBox}"
IsChecked="{Binding IsResultHex}"/>
<CheckBox Grid.Column="3" Content="Base64" Style="{StaticResource OptionCheckBox}"
IsChecked="{Binding IsResultBase64}"/>
</Grid>
<TextBox Grid.Row="1" x:Name="txtResult"
Text="{Binding ResultText, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource CodeTextBox}" IsReadOnly="True" Background="#F5F5F5"/>
</Grid>
</Border>
</Grid>
</Grid>
</Window>
|