145 lines
3.8 KiB
C#
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|