/// <summary> /// 密码修改 /// </summary> /// <param name="uId">用户标识</param> /// <param name="nPwd">加密的新密码</param> /// <param name="nFormat">新密码加密方式</param> /// <param name="nSalt">新密码盐值</param> public void ChangePassword(string uId, String nPwd, EnmPasswordFormat nFormat, String nSalt) { SqlParameter[] parms = { new SqlParameter("@ID", SqlDbType.VarChar, 100), new SqlParameter("@PWD", SqlDbType.VarChar, 128), new SqlParameter("@PwdFormat", SqlDbType.Int), new SqlParameter("@PwdSalt", SqlDbType.VarChar, 128) }; using (var conn = new SqlConnection(this._databaseConnectionString)) { if (conn.State != ConnectionState.Open) { conn.Open(); } var trans = conn.BeginTransaction(IsolationLevel.ReadCommitted); try { parms[0].Value = SqlTypeConverter.DBNullStringChecker(uId); parms[1].Value = nPwd; parms[2].Value = nFormat; parms[3].Value = nSalt; SqlHelper.ExecuteNonQuery(trans, CommandType.Text, SqlCommands_Rs.Sql_U_User_Repository_ChangePassword, parms); trans.Commit(); } catch { trans.Rollback(); throw; } } }
/// <summary> /// Ctor /// </summary> public UserService( IU_UserRepository repository, ICacheManager cacheManager) { this._repository = repository; this._cacheManager = cacheManager; this._passwordFormat = EnmPasswordFormat.Hashed; }
/// <summary> /// 密码加密(采用SHA1加密方式或不加密) /// </summary> /// <param name="pwd">待加密的密码</param> /// <param name="format">加密方式</param> /// <param name="salt">加密盐值</param> /// <returns>返回已经加密的密码</returns> public String EncodePassword(String pwd, EnmPasswordFormat format, String salt) { if (format == EnmPasswordFormat.Clear) { return pwd; } var bytes = Encoding.Unicode.GetBytes(pwd); var src = Convert.FromBase64String(salt); var dst = new byte[src.Length + bytes.Length]; Buffer.BlockCopy(src, 0, dst, 0, src.Length); Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length); var algorithm = HashAlgorithm.Create("SHA1"); var inArray = algorithm.ComputeHash(dst); return Convert.ToBase64String(inArray); }
public bool CheckPassword(String oPwd, EnmPasswordFormat oFormat, String oSalt, String ePwd) { return(_repository.EncodePassword(oPwd, oFormat, oSalt).Equals(ePwd)); }
/// <summary> /// Check password. /// </summary> /// <param name="encodePwd">encode password</param> /// <param name="originalPwd">original password</param> /// <param name="passwordFormat">password format</param> /// <param name="salt">salt value</param> /// <returns>true/false</returns> public Boolean CheckPassword(String encodePwd, String originalPwd, EnmPasswordFormat passwordFormat, String salt) { return(EncodePassword(originalPwd, passwordFormat, salt).Equals(encodePwd)); }