Sic04/SicUI/Models/RecipeEditors/EditorPassChangeView.xaml.cs

145 lines
3.8 KiB
C#

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.Windows.Threading;
using System.Security.Cryptography;
using Aitex.Core.RT.SCCore;
namespace SicUI
{
/// <summary>
/// WinDataView.xaml 的交互逻辑
/// </summary>
public partial class EditorPassChangeView : Window
{
private string _sPassword = "";
//
public string Password { get
{
return _sPassword; }
set
{
_sPassword = value;
}
}
SicUI.Models.RecipeEditors.RecipeEditorViewModel revm = null;
public EditorPassChangeView(Object obj)
{
InitializeComponent();
//
revm = obj as SicUI.Models.RecipeEditors.RecipeEditorViewModel;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string sCurPass = this.CurPass.Text.Trim();
string sNewPass1 = this.NewPass1.Text.Trim();
string sNewPass2 = this.NewPass2.Text.Trim();
//
if(sCurPass.Length == 0)
{
MessageBox.Show("Current Password can't be empty.");
return;
}
if(sNewPass1.Length == 0)
{
MessageBox.Show("Please input the New Password.");
return;
}
if(sNewPass2.Length == 0)
{
MessageBox.Show("Please input the Confirm Password.") ;
return;
}
if(sNewPass1.CompareTo(sNewPass2) != 0)
{
MessageBox.Show("The new passwords are inconsistent.");
return;
}
if(!this.CheckPass(sCurPass))
{
MessageBox.Show("Current password is wrong.");
return;
}
//
if (WriteNewPass(sNewPass1))
{
MessageBox.Show("Change password succeed.");
}
else
{
MessageBox.Show("Change password error.");
}
}
private bool CheckPass(string sPassword)
{
if(this.Password == "0")
{
//初始值,未修改过密码
return true;
}
//
MD5 m = MD5.Create();
byte[] bPass = System.Text.Encoding.UTF8.GetBytes(sPassword);
byte[] md5bPass = m.ComputeHash(bPass);
string sPass = "";
for(int i=0;i<md5bPass.Length;i++)
{
sPass += md5bPass[i].ToString("X2");
}
return sPass == this.Password;
}
private bool WriteNewPass(string sPassword)
{
//
try
{
MD5 m = MD5.Create();
byte[] bPass = System.Text.Encoding.UTF8.GetBytes(sPassword);
byte[] md5bPass = m.ComputeHash(bPass);
string sPass = "";
for (int i = 0; i < md5bPass.Length; i++)
{
sPass += md5bPass[i].ToString("X2");
}
//
if (revm != null)
{
return revm.ChanagePasswordReal(sPass);
}
else
{
return false;
}
}
catch
{
return false;
}
//
return true;
}
}
}