Arkdaşlar size bugun C# ta basit seviye mantık olarak nasıl Password Manager yapıldıgına dair kodları buraya ekleyeceğim, umarım faydası olur. Arkadaşlar paylasaşacagım kodlar henuz tam bir password manager işlemi yapmamakta sadece mantıgını kavramaya yetecek şekilde çalışmaktadır şuanlık. Kategori eklemek ve girdiğiniz şifreyi md5 ile şifreleyerek gride ekliyoruz. İsteyenler gizli biyere ekleyebilir.Kolay gelsin , kodlu günler :)
****KATEGORİ CLASS*********** using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PasswordManager { public class Kategori { public string Name { get; set; } public string Password { get; set; } public string Hash { get; set; } } } ************OPERATİONS CLASS******** using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Security.Cryptography; //using System.Security.Cryptography.MD5; namespace PasswordManager { public class Operations { User usr = new User(); public User Login(string name,string pass) { usr.UserName = "user"; usr.Pasword = "123"; if (usr.UserName== name && usr.Pasword==pass) { return usr; } else { return null; } } public Kategori Sifrele(string veriName,string _password) { MD5 md5 = System.Security.Cryptography.MD5.Create(); byte[] veriBytes = System.Text.Encoding.ASCII.GetBytes(_password); byte[] hash = md5.ComputeHash(veriBytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i < hash.Length; i++) { sb.Append(hash[i].ToString("X2")); } Kategori kt = new Kategori(); kt.Name = veriName; kt.Password = _password; kt.Hash = sb.ToString(); return kt; } } } **************** USER CLASS ********************** using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PasswordManager { public class User { public string Mail { get; set; } public string UserName { get; set; } public string Pasword { get; set; } } } ********** MAIN WINDOW.CS ********* using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace PasswordManager { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { Operations op = new Operations(); try { if (!string.IsNullOrEmpty(TextBoxKullanici.Text) && !string.IsNullOrEmpty(TextBoxSifre.Text) && !string.IsNullOrWhiteSpace(TextBoxKullanici.Text) && !string.IsNullOrWhiteSpace(TextBoxSifre.Text) && TextBoxKullanici.Text.Length>0 && TextBoxSifre.Text.Length>0) { var deger = op.Login(TextBoxKullanici.Text.Trim(), TextBoxSifre.Text.Trim()); if (deger!=null) { Window1 win1 = new Window1(); win1.Show(); this.Hide(); MessageBox.Show("Lütfen her şifreleme işleminde tek bir Kategori seçiniz yoksa işleminiz yapılmayacaktır."); } else { MessageBox.Show("Giriş Bilgileriniz Hatalıdır "+PasswordBox.TextInputEvent); } } } catch (Exception ex) { throw ex; } } } } *************** WINDOW1.CS ******************* // Yeni Formumuz using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Security.Cryptography; using System.Security; //using System.Security.Cryptography.MD5; namespace PasswordManager { /// <summary> /// Interaction logic for Window1.xaml /// </summary> public partial class Window1 : Window { List<string> catList = new List<string>(); List<Kategori> categories = new List<Kategori>(); public Window1() { InitializeComponent(); //DataGridSifreler.ItemsSource = new List<Kategori>() { new Kategori() { Name = "test", Password = "123", Hash = "123" } }; InitalPopulatePanel(); PopulatePasswordPanel(); } private void InitalPopulatePanel() { InsertCategory("Facebook"); InsertCategory("Twitter"); InsertCategory("LinkedIn"); } private void PopulatePasswordPanel() { for (int i = 1; i <= catList.Count; i++) { CheckBox ch1 = new CheckBox(); if (i == 0) { ch1.Content = catList[i]; KategoriPanel.Children.Add(ch1); } else { ch1.Content = catList[i-1]; KategoriPanel.Children.Add(ch1); } } } private void InsertCategory(string catName) { catList.Add(catName); } private void Button_Click(object sender, RoutedEventArgs e) // Kategori Ekle Butonu { InsertCategory(TextBoxKategori.Text); PopulatePasswordPanel(); KategoriPanel.Children.RemoveRange(0, 100); PopulatePasswordPanel(); TextBoxKategori.Clear(); // DataGridSifreler.ItemsSource = null; } private void ButonSifrele_Click(object sender, RoutedEventArgs e) { DataGridSifreler.AutoGenerateColumns = false; Operations on = new Operations(); DataGridSifreler.ItemsSource = null; foreach (var i in KategoriPanel.Children) { try { bool cek = (i as CheckBox).IsChecked.Value; string cekName = (i as CheckBox).Content.ToString(); if (cek == true) { var gelenVeri = on.Sifrele(cekName, TextBoxCrypto.Text); categories.Add(gelenVeri); DataGridSifreler.ItemsSource = categories; TextBoxCrypto.Clear(); } } catch (Exception) { throw; } } //var gelenVeri = on.Sifrele(TextBoxKategori.Text, TextBoxCrypto.Text); //categories.Add(gelenVeri); //DataGridSifreler.ItemsSource = categories; } private void ButonTemizle_Click(object sender, RoutedEventArgs e) { DataGridSifreler.ItemsSource = null; } } } *********************** MAIN WINDOW XAML *********************** <Window x:Class="PasswordManager.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="PasswordManager" Height="350" Width="304.166"> <Grid HorizontalAlignment="Left" Width="294" Background="#FF4F4F4F"> <Label Name="LabelHosgeldin" Content="Hosgeldiniz" HorizontalAlignment="Left" Margin="79,0,0,0" VerticalAlignment="Top" RenderTransformOrigin="1.677,0.383" Width="129" FontWeight="Bold" FontSize="20" FontStyle="Italic" Foreground="#FFFFCDCD"/> <Label Name="LabelParola" Content="Parola" HorizontalAlignment="Left" Margin="0,151,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.428,-0.071" FontSize="18" FontWeight="Bold" Width="100"/> <GridSplitter HorizontalAlignment="Left" Height="295" Margin="123,-77,0,0" VerticalAlignment="Top" Width="48" RenderTransformOrigin="0.5,0.5" Background="#FF854F4F"> <GridSplitter.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform AngleY="-0.023"/> <RotateTransform Angle="89.629"/> <TranslateTransform X="-0.01"/> </TransformGroup> </GridSplitter.RenderTransform> </GridSplitter> <Label Name="LabelKullanici" Content="Kullanıcı Adı" HorizontalAlignment="Left" Margin="0,106,0,0" VerticalAlignment="Top" Width="109" FontWeight="Bold" FontSize="16"/> <TextBox Name="TextBoxKullanici" HorizontalAlignment="Left" Height="31" Margin="129,106,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="138" RenderTransformOrigin="0.493,0.548" Background="#FFFBFBFB"/> <Button Content="Giriş Yap" HorizontalAlignment="Left" Margin="161,190,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/> <GridSplitter HorizontalAlignment="Left" Height="297" Margin="120,105,0,-83" VerticalAlignment="Top" Width="55" RenderTransformOrigin="0.5,0.5" Background="#FF874B4B"> <GridSplitter.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform AngleY="0.086"/> <RotateTransform Angle="-90.111"/> <TranslateTransform X="0.028"/> </TransformGroup> </GridSplitter.RenderTransform> </GridSplitter> <Button Name="ButonRegister" Content="Register ?" HorizontalAlignment="Left" Margin="25,289,0,0" VerticalAlignment="Top" Width="75"/> <Button Name="ButonSifreUnuttum" Content="Sifre'mi Unuttum" HorizontalAlignment="Left" Margin="161,289,0,0" VerticalAlignment="Top" Width="101"/> <TextBox Name="TextBoxSifre" HorizontalAlignment="Left" Height="34" Margin="129,151,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="138"/> </Grid> </Window> ************* WINDOW1 XAML ********************* <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" xmlns:dxca="http://schemas.devexpress.com/winfx/2008/xaml/carousel" x:Class="PasswordManager.Window1" Title="PasswordManager" Height="377" Width="642"> <Grid Margin="0,0,2,-3" Background="#FF535151"> <StackPanel Name="KategoriPanel" HorizontalAlignment="Left" Height="182" VerticalAlignment="Top" Width="100" Margin="0,35,0,0"> </StackPanel> <Button Name="ButonKategoriEkle" Content="Kategori Ekle" HorizontalAlignment="Left" Margin="19,306,0,0" VerticalAlignment="Top" Width="111" Click="Button_Click"/> <TextBox Name="TextBoxCrypto" HorizontalAlignment="Left" Height="24" Margin="214,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/> <Label Name="LabelSifreSec" Content="Sifre" HorizontalAlignment="Left" Margin="169,13,0,0" VerticalAlignment="Top" FontWeight="Bold"/> <Button Name="ButonSifrele" Content="Şifrele" HorizontalAlignment="Left" Margin="356,10,0,0" VerticalAlignment="Top" Width="75" Click="ButonSifrele_Click"/> <TextBox Name="TextBoxKategori" HorizontalAlignment="Left" Height="23" Margin="10,278,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="134"/> <DataGrid AutoGenerateColumns="False" Name="DataGridSifreler" HorizontalAlignment="Left" Margin="169,39,0,0" VerticalAlignment="Top" Height="197" Width="325"> <DataGrid.Columns> <DataGridTextColumn Header="Name" Binding="{Binding Name, Mode=TwoWay}" /> <DataGridTextColumn Header="Şifre" Binding="{Binding Password, Mode=TwoWay}" /> <DataGridTextColumn Header="Hash" Binding="{Binding Hash, Mode=TwoWay}" /> </DataGrid.Columns> </DataGrid> <Label Content="Eklenecek Kategori İsmi" HorizontalAlignment="Left" Margin="10,256,0,0" VerticalAlignment="Top" Background="{x:Null}" FontWeight="Bold"/> <Label Content="Kategoriler" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" FontWeight="Bold" FontSize="14"/> <Button Name="ButonTemizle" Content="Temizle" HorizontalAlignment="Left" Margin="533,41,0,0" VerticalAlignment="Top" Width="75" RenderTransformOrigin="-0.013,0.545" Click="ButonTemizle_Click"/> </Grid> </Window> *********************************************************************
Yorumlar
Yorum Gönder