using System; using System.Data; using System.Data.OracleClient; using System.Text.RegularExpressions; using System.Windows.Forms; using Cyberpipe.SM4; using DevComponents.DotNetBar; namespace Cyberpipe { public partial class FrmChangePassword : Office2007Form { public static bool IS_OPEN; public FrmChangePassword() { InitializeComponent(); } private void btn_ok_Click(object sender, EventArgs e) { try { if (String.IsNullOrEmpty(txt_pwd_new.Text.Trim())) { MessageBox.Show("新密码不能为空!"); return; } if (!txt_pwd_new.Text.Trim().Equals(txt_pwd_cfm.Text.Trim())) { MessageBox.Show("请确认要修改的密码!"); return; } // 验证密码的复杂度——大小写字母+数字+特殊字符,长度不低于8位 bool regMatch = Regex.IsMatch(txt_pwd_new.Text.Trim(), "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,}$"); if (regMatch == false) { MessageBox.Show("请确保密码强度:至少包含字母、数字和特殊字符,不少于8位!"); return; } string sql = "select count(*) from casic_userinfotest where SYSNAME='EMS' and USERNAME=:username and PASSWORD=:passwordOld"; OracleParameter usernameParam = new OracleParameter(":username", Utility.userName); OracleParameter passwordOldParam = new OracleParameter(":passwordOld", SM4Utils.SM4EncryptStr(txt_pwd_old.Text.Trim())); int count = int.Parse(OledbHelper.ExecuteScalar(sql, usernameParam, passwordOldParam).ToString()); if (count <= 0) { MessageBox.Show("密码错误!"); return; } sql = "update casic_userinfotest set password='" + SM4Utils.SM4EncryptStr(txt_pwd_new.Text.Trim()) + "' where sysname='EMS' and username='" + Utility.userName + "'"; int rowCount = OracleUtils.ExecuteNonQuery(OracleUtils.ConnectionString, CommandType.Text, sql); if (rowCount == 1) { MessageBox.Show("修改成功!请退出系统后重新登录"); } else { MessageBox.Show("修改失败"); } } catch (Exception ex) { MessageBox.Show("修改失败:" + ex); this.Hide(); } this.Hide(); } private void FrmChangePassword_Load(object sender, EventArgs e) { IS_OPEN = true; } private void FrmChangePassword_FormClosing(object sender, FormClosingEventArgs e) { IS_OPEN = false; } } }