借助网络配置,控制Modbus工具的日志显示,避免卡死界面
智能大石头 authored at 2021-12-11 22:09:19
12.18 KiB
XCoder
<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>