Skip to content

Commit

Permalink
Добавлено переключение страниц кнопками. Добавлен механизм получения …
Browse files Browse the repository at this point in the history
…названия страницы и информации о ней.
  • Loading branch information
sven4500 committed May 31, 2021
1 parent 9ba46c6 commit 506e86e
Show file tree
Hide file tree
Showing 10 changed files with 118 additions and 74 deletions.
6 changes: 3 additions & 3 deletions DecryptionPage/DecryptionPage.xaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<Page x:Class="RSATutor.DecryptionPage.DecryptionPage"
<Page x:Class="RSATutor.DecryptionPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:RSATutor.DecryptionPage"
xmlns:local="clr-namespace:RSATutor"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Title="DecryptionPage">
Title="Дешифрование сообщения">
<Grid>
</Grid>
</Page>
2 changes: 1 addition & 1 deletion DecryptionPage/DecryptionPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace RSATutor.DecryptionPage
namespace RSATutor
{
/// <summary>
/// Interaction logic for DecryptionPage.xaml
Expand Down
30 changes: 11 additions & 19 deletions EncryptionPage/EncryptionPage.xaml
Original file line number Diff line number Diff line change
@@ -1,44 +1,36 @@
<Page x:Class="RSATutor.EncryptionPage.EncryptionPage"
<Page x:Class="RSATutor.EncryptionPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:RSATutor.EncryptionPage"
xmlns:local="clr-namespace:RSATutor"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Title="EncryptionPage">
Title="Шифрование сообщения">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="3.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="3.5*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="5*"/>
</Grid.ColumnDefinitions>
<TextBlock FontSize="20" Grid.ColumnSpan="6" VerticalAlignment="Center"><Bold>Шифрование сообщения</Bold></TextBlock>
<Expander Grid.Row="1" Grid.RowSpan="4"
ExpandDirection="Right" Header="">
<TextBlock Margin="10">
Дополнительное описание
</TextBlock>
</Expander>
<TextBlock Grid.Row="1" Grid.Column="2"
<TextBlock Grid.Row="1" Grid.Column="0"
VerticalAlignment="Center" Text="Исходное сообщение"/>
<TextBox Grid.Row="2" Grid.Column="2"/>
<TextBlock Grid.Row="3" Grid.Column="2"
<TextBox Grid.Row="2" Grid.Column="0"/>
<TextBlock Grid.Row="3" Grid.Column="0"
VerticalAlignment="Center" Text="Шестнадцатеричное"/>
<TextBox Grid.Row="4" Grid.Column="2"
<TextBox Grid.Row="4" Grid.Column="0"
IsEnabled="False"/>
<!-- PreviousAndNext потому что колонка имеет размер *-->
<GridSplitter Grid.Column="3" Grid.Row="1" Grid.RowSpan="4"
<GridSplitter Grid.Column="1" Grid.Row="1" Grid.RowSpan="4"
ResizeDirection="Columns" ShowsPreview="False" ResizeBehavior="PreviousAndNext" Width="10"/>
<TextBlock Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2"
VerticalAlignment="Center" Text="Зашифрованное сообщение"/>
Expand Down
2 changes: 1 addition & 1 deletion EncryptionPage/EncryptionPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace RSATutor.EncryptionPage
namespace RSATutor
{
/// <summary>
/// Interaction logic for EncryptionPage.xaml
Expand Down
62 changes: 28 additions & 34 deletions IntroductionPage/IntroductionPage.xaml
Original file line number Diff line number Diff line change
@@ -1,41 +1,35 @@
<Page x:Class="RSATutor.IntrodutionPage.Page1"
<Page x:Class="RSATutor.IntroductionPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:RSATutor.IntrodutionPage"
xmlns:local="clr-namespace:RSATutor"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Title="IntroductionPage">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="9*"/>
</Grid.RowDefinitions>
<TextBlock FontSize="20" VerticalAlignment="Center"><Bold>Введение</Bold></TextBlock>
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<TextBlock Margin="0,0,10,0" TextAlignment="Justify" TextWrapping="WrapWithOverflow" FontSize="16" >
<Bold>RSA</Bold> (аббревиатура от фамилий Rivest, Shamir и Adleman) - асиметричный криптографический алгоритм,
основанный на вычислительной сложности задачи факторизации больших целых чисел.
<LineBreak/><LineBreak/>
<Italic>Асиметричный</Italic> означает что для задачи шифрования и дешифрования данных используются разные ключи.
<Italic>Ключом</Italic> в свою очередь называют некоторое число или несколько чисел которые участвуют в процессе
шифорвания и дешифрования данных.
<LineBreak/><LineBreak/>
Допустим имеется некоторый получатель сообщений, который не хочет, чтобы его сообщения могли быть
прочитаны кем-то кроме него. В соответствии с алгоритмом RSA он генерирует два ключа: приватный
и публичный. Публичный ключ он передаёт всем отправителям сообщений, а приватный оставляет у себя
и хранит в тайне.
<LineBreak/><LineBreak/>
Отправитель использует известный ему публичный ключ чтобы зашифровать сообщение и отправляет
зашифрованные сообщение получателю. Получатель использует свой приватный ключ чтобы дешифровать и
прочитать полученное сообщение.
<LineBreak/><LineBreak/>
Таким образом <Italic>приватный</Italic> ключ использует только получатель для дешифрования сообщения.
<Italic>Публичный</Italic> ключ использует только отправитель для шифрования сообщения. Отсюда вытекает
что зашифрованное сообщение не сможет прочитать даже отправитель так как для его прочтения требуется
приватный ключ, а он известен только получателю.
</TextBlock>
</ScrollViewer>
</Grid>
Title="Введение">
<Page.Tag>
<sys:String>
RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) - асиметричный криптографический алгоритм,
основанный на вычислительной сложности задачи факторизации больших целых чисел.

Асиметричный означает что для задачи шифрования и дешифрования данных используются разные ключи.
Ключом в свою очередь называют некоторое число или несколько чисел которые участвуют в процессе
шифорвания и дешифрования данных.

Допустим имеется некоторый получатель сообщений, который не хочет, чтобы его сообщения могли быть
прочитаны кем-то кроме него. В соответствии с алгоритмом RSA он генерирует два ключа: приватный
и публичный. Публичный ключ он передаёт всем отправителям сообщений, а приватный оставляет у себя
и хранит в тайне.

Отправитель использует известный ему публичный ключ чтобы зашифровать сообщение и отправляет
зашифрованные сообщение получателю. Получатель использует свой приватный ключ чтобы дешифровать и
прочитать полученное сообщение.

Таким образом приватный ключ использует только получатель для дешифрования сообщения.
Публичный ключ использует только отправитель для шифрования сообщения. Отсюда вытекает
что зашифрованное сообщение не сможет прочитать даже отправитель так как для его прочтения
требуется приватный ключ, а он известен только получателю.
</sys:String>
</Page.Tag>
</Page>
6 changes: 3 additions & 3 deletions IntroductionPage/IntroductionPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace RSATutor.IntrodutionPage
namespace RSATutor
{
/// <summary>
/// Interaction logic for Page1.xaml
/// </summary>
public partial class Page1 : Page
public partial class IntroductionPage : Page
{
public Page1()
public IntroductionPage()
{
InitializeComponent();
}
Expand Down
6 changes: 3 additions & 3 deletions KeyGeneratorPage/KeyGeneratorPage.xaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<Page x:Class="RSATutor.KeyGeneratorFrame.KeyGeneratorPage"
<Page x:Class="RSATutor.KeyGeneratorPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:RSATutor.KeyGeneratorFrame"
xmlns:local="clr-namespace:RSATutor"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Title="KeyGeneratorPage">
Title="Генерация ключей">
<Grid>
</Grid>
</Page>
2 changes: 1 addition & 1 deletion KeyGeneratorPage/KeyGeneratorPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace RSATutor.KeyGeneratorFrame
namespace RSATutor
{
/// <summary>
/// Interaction logic for KeyGeneratorPage.xaml
Expand Down
36 changes: 27 additions & 9 deletions MainWindow/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,37 @@
xmlns:local="clr-namespace:RSATutor"
mc:Ignorable="d"
Title="RSATutor" Height="450" Width="800" >
<Grid Margin="10,10" >
<Grid Name="MainGrid" Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="9*" />
<RowDefinition Height="1*" />
<RowDefinition Height="8*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="7*" />
<ColumnDefinition Width="1.5*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="1.5*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Frame Name="ContentsFrame" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" Source="../EncryptionPage/EncryptionPage.xaml" FontSize="20" />
<Button Name="NextButton" Grid.Row="1" Grid.Column="3" Content="Далее" VerticalAlignment="Center" />
<Button Name="PrevButton" Grid.Row="1" Grid.Column="1" Content="Назад" VerticalAlignment="Center" />
<TextBlock Name="PageTitle" FontSize="20" Grid.ColumnSpan="2"/>
<Expander Name="PageDescriptionExpander" ExpandDirection="Right" Header="" Grid.Row="1"
Expanded="PageDescriptionExpander_Expanded" >
<ScrollViewer VerticalScrollBarVisibility="Auto">
<TextBlock Name="PageDescription" FontSize="16" TextAlignment="Justify" TextWrapping="WrapWithOverflow" Margin="10" />
</ScrollViewer>
</Expander>
<Frame Name="ContentsFrame" NavigationUIVisibility="Hidden" Grid.Row="1" Grid.Column="1"/>
<Grid Grid.Row="2" Grid.ColumnSpan="3" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Button Name="PrevButton"
Content="Назад" Grid.Column="1"
Click="PrevButton_Click"/>
<Button Name="NextButton"
Content="Далее" Grid.Column="3"
Click="NextButton_Click"/>
</Grid>
</Grid>
</Window>
40 changes: 40 additions & 0 deletions MainWindow/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using RSATutor;

namespace RSATutor
{
Expand All @@ -20,9 +21,48 @@ namespace RSATutor
/// </summary>
public partial class MainWindow : Window
{
private Page[] pages = { new IntroductionPage(), new KeyGeneratorPage(), new EncryptionPage(), new DecryptionPage() };
private int pageNumber = 0;

public MainWindow()
{
InitializeComponent();
setPage(0);
}

void setPage(int pageNumber)
{
if (pageNumber < 0 || pageNumber >= pages.Length)
return;
Page page = pages[pageNumber];
PageDescriptionExpander.IsExpanded = (pageNumber == 0);
ContentsFrame.Navigate(page);
PageTitle.Text = page.Title;
PageDescription.Text = page.Tag as string;
this.pageNumber = pageNumber;
updateExpanderWidth();
}

private void NextButton_Click(object sender, RoutedEventArgs e)
{
setPage(pageNumber + 1);
}

private void PrevButton_Click(object sender, RoutedEventArgs e)
{
setPage(pageNumber - 1);
}
private void updateExpanderWidth()
{
if (pageNumber == 0)
PageDescriptionExpander.MaxWidth = MainGrid.ActualWidth;
else
PageDescriptionExpander.MaxWidth = MainGrid.ActualWidth / 3;
}

private void PageDescriptionExpander_Expanded(object sender, RoutedEventArgs e)
{
updateExpanderWidth();
}
}
}

0 comments on commit 506e86e

Please sign in to comment.