尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
用户与密码的对应对比操作
用户类/// summary/// 用户实体类/// /summarypublicclassUser{publicintId{get;set;}publicstringUsername{get;set;}string.Empty;publicstringPasswordHash{get;set;}string.Empty;publicstringSalt{get;set;}string.Empty;publicintRole{get;set;}// 0实验员, 1管理员publicstringRealName{get;set;}string.Empty;publicstringEmail{get;set;}string.Empty;publicDateTimeCreatedAt{get;set;}publicDateTime?LastLoginAt{get;set;}publicboolIsActive{get;set;}true;publicintSyncStatus{get;set;}0;// 0已同步, 1待同步, 2同步失败publicstring?CloudId{get;set;}// 云端用户ID}/// summary/// 获取权限对应的中文名称/// /summarypublicstaticstringGetPermissionName(stringpermission){returnpermissionswitch{ConfigureDevice设备参数配置,ConfigureAlarm报警阈值设置,EditTask任务编辑,ImportExportTask任务导入导出,DataManagement数据管理,UserManagement用户管理,ExecuteOperation手动操作,AutoRun连续执行,ViewData查看数据,ConfirmAlarm确认报警,_permission};}密码操作合并publicstaticclassPasswordHelper{/// summary/// 生成随机盐值/// /summarypublicstaticstringGenerateSalt(){byte[]saltBytesnewbyte[16];using(varrngRandomNumberGenerator.Create()){rng.GetBytes(saltBytes);}returnConvert.ToBase64String(saltBytes);}/// summary/// 哈希密码/// /summarypublicstaticstringHashPassword(stringpassword,stringsalt){using(varsha256SHA256.Create()){varsaltedPasswordpasswordsalt;byte[]bytessha256.ComputeHash(Encoding.UTF8.GetBytes(saltedPassword));returnConvert.ToBase64String(bytes);}}/// summary/// 验证密码/// /summarypublicstaticboolVerifyPassword(stringpassword,stringstoredHash,stringsalt){varhashHashPassword(password,salt);returnhashstoredHash;}}密码 参考值与 salt 生成的方法varsaltPasswordHelper.GenerateSalt();NewUsernewUser{Usernameusername,PasswordHashPasswordHelper.HashPassword(password,salt),Saltsalt,Rolerole,RealNamerealName,Emailemail,CreatedAtDateTime.Now,IsActiveisActive,SyncStatus1};验证密码privatevoidbtnOK_Click(object?sender,EventArgse){// 修改密码模式验证旧密码if(!_isResetMode){stringoldPasswordtxtOldPassword.Text;if(string.IsNullOrEmpty(oldPassword)){MessageBox.Show(请输入原密码,提示,MessageBoxButtons.OK,MessageBoxIcon.Warning);txtOldPassword.Focus();return;}if(!PasswordHelper.VerifyPassword(oldPassword,_user.PasswordHash,_user.Salt)){MessageBox.Show(原密码错误,验证失败,MessageBoxButtons.OK,MessageBoxIcon.Warning);txtOldPassword.Focus();return;}}stringnewPasswordtxtNewPassword.Text;stringconfirmPasswordtxtConfirmPassword.Text;if(string.IsNullOrEmpty(newPassword)){MessageBox.Show(请输入新密码,提示,MessageBoxButtons.OK,MessageBoxIcon.Warning);txtNewPassword.Focus();return;}if(newPassword.Length6){MessageBox.Show(密码长度至少6位,提示,MessageBoxButtons.OK,MessageBoxIcon.Warning);txtNewPassword.Focus();return;}if(newPassword!confirmPassword){MessageBox.Show(两次输入的密码不一致,提示,MessageBoxButtons.OK,MessageBoxIcon.Warning);txtConfirmPassword.Focus();return;}_newPasswordnewPassword;DialogResultDialogResult.OK;Close();}
RELATED

相关推荐

Python 元组(Tuple)详解

Python 元组(Tuple)详解

1. 什么是元组?元组(Tuple)是 Python 中一种不可变的序列类型,用于存储一组有序的元素。与列表(List)不同,元组一旦创建,其内容就不能被修改(增、删、改)&…

📅 2026/8/23 17:16:53
AI逻辑推理能力实测:Mensa谜题揭示的约束满足瓶颈

AI逻辑推理能力实测:Mensa谜题揭示的约束满足瓶颈

1. 这不是一场“AI能不能赢人类”的表演赛,而是一次对推理边界的实地测绘 我花三周时间,把Mensa官网公开的127道经典逻辑谜题、数字矩阵、空间折叠、类比推理和语言陷阱题全部喂给了ChatGPT-4o、Claude 3.5 Sonnet和Grok-3——不是为了看谁答得快&#x…

📅 2026/8/23 17:16:53
Mixamo动画UE4转换指南:解决骨骼重定向与自动化导入

Mixamo动画UE4转换指南:解决骨骼重定向与自动化导入

1. 项目概述:为什么Mixamo动画在UE4里总“水土不服”?如果你是从Unity转战UE4,或者刚开始在UE4里做角色动画,大概率都听说过Mixamo这个宝藏网站。它提供了海量免费、高质量的角色动画资源,简直是独立开发者和小型团队的…

📅 2026/9/9 0:03:05
MORE NEWS

更多资讯

📰

Ansys LSDyna在岩石混凝土准静态力学仿真中的应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Kruskal算法:最小生成树的贪心实现与优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

AP9196升降压芯片原理与工程落地实战指南

1. 这块模块到底解决了什么实际问题?——从电源适配的“三不管地带”说起 我第一次见到这个标着“9-30V输入,10V/2.5A输出”的升降压驱动模块时,手边正摆着三台设备:一台老式车载监控主机(标称12V,实测怠速…

📰

Web3种子期增长实战:从空投获取到用户留存的完整打法

我做增长这行前前后后也有七八年了,从传统互联网的积分体系、用户分层,一路跟到Web3项目里做冷启动和留存。刚转过来那阵子,我把过去那套"注册-激活-留存-转化"漏斗原封不动搬到链上项目里,结果第一个月数据就给我上了一…

📰

ESP32+MAX30102心率检测:从PPG原理到实战代码全解析

想不想让手里的ESP32学会“听心跳”?先泼一盆冷水:这里的心跳不是让你把芯片贴在胸口感受浪漫,而是用MAX30102这个光学传感器,让单片机读取手指皮肤下的血流搏动信号,计算出实时心率。这套组合在创客圈相当经典——ESP…

📰

C++工厂模式详解:原理、实现与实战应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬