加密

1.要用md5加密,要添加程序集system.Web。

2.蓝色下划线,是有个失效日期。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ItCastSIM
{
    public partial class FrmLogin : Form
    {
        public FrmLogin()
        {
            InitializeComponent();
        } #region 登录  -void btnLogin_Click(object sender, EventArgs e)
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLogin_Click(object sender, EventArgs e)
        {
            string userName = txtUserName.Text.Trim();
            string userPwd = txtPwd.Text.Trim();
            MODEL.Person per = pm.Login(userName); //
            if (per == null)
            {
                MessageBox.Show("用户名不存在");
            }
            else
            {
                if (per.PPwd == System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(userPwd, "md5")) //md5加密
                {
                    //MessageBox.Show(this.DialogResult.ToString()); none
                    this.DialogResult = DialogResult.OK; //这个窗体你做了相应的合理的操作,那么窗体就会关闭
                    #region 不能关闭起始窗体
                    //MessageBox.Show(per.PCName+":登录成功");
                    //FrmMain frm = new FrmMain();
                    //frm.Text = "欢迎你:" + per.PCName;
                    ////this.Hide();
                    ////this.Visible = false; //设置隐藏属性
                    //frm.ShowDialog();
                    //frm.DialogResult = DialogResult.OK;
                    //this.Close();//关闭当前窗体,如果一个窗体是从另外一个窗体打开的,如果关闭起始的打开窗体,那么通过这个起始窗体打开的所有窗体都会关闭。。也就说明,如果关闭起始窗体,那么就相当于退出应用程序 
                    #endregion
                }
                else
                {
                    MessageBox.Show("密码错误了");
                }
            }
        } 
namespace BLL
{
    public class PersonManager
    {
        DAL.PersonService ps = new DAL.PersonService();

        #region 登录判断  +MODEL.Person Login(string name, string pwd)
        /// <summary>
        /// 登录判断
        /// </summary>
        /// <param name="name"></param>
        /// <param name="pwd"></param>
        /// <returns></returns>
        public MODEL.Person Login(string name)
        {
            return ps.Login(name);
        }   
 /// <summary>
        /// 登录判断
        /// </summary>
        /// <param name="name"></param>
        /// <param name="pwd"></param>
        /// <returns></returns>
        public MODEL.Person Login(string name)
        {
            return ps.Login(name);
        } 
     }
 }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace DAL
{
    public class PersonService
    {
        #region 登录判断  +MODEL.Person Login(string name, string pwd)
        /// <summary>
        /// 登录判断
        /// 传入登录名,根据登录名获取对应的行记录,将行记录转换为对象
        /// </summary>
        /// <param name="name"></param>
        /// <param name="pwd"></param>
        /// <returns></returns>
        public MODEL.Person Login(string name)
        {
            string sql = "select person.*,cname from person inner join classes on Person.PCID=Classes.CID  where ploginname=@name and pisdel=@isDel";
            SqlParameter[] ps ={
                                  new SqlParameter("name",name),
                                  new SqlParameter("isDel",false)
                              };
            //1.如果是得到增加删除和修改以及结果集的第一行第一列值那么就使用创建连接对象,命令对象,调用命令对象的方法
            //2.如果是想得到结果集多行多列(多个值),一般不会使用SqlDataReader,而使用SqlDataAdapter
            DataTable dt = SqlHelper.ExcuteTable(sql, ps); //根据唯一约束的原理,表中应该只有一条记录
            MODEL.Person person = null;
            if (dt.Rows.Count > 0)//判断有没有返回记录
            {
                person = new MODEL.Person();
                DataRowToPerson(dt.Rows[0], person); //person是引用类型,方法对其进行修改, 原始值也会变化
            }
            return person;
        }
    /// 将人员结果集表中的行转换为对象
        /// </summary>
        /// <param name="row"></param>
        /// <param name="person"></param>
        private void DataRowToPerson(DataRow row, MODEL.Person person)
        {
            person.PID = Convert.ToInt32(row[0]);
            person.PCID = Convert.ToInt32(row[1]);
            person.PType = Convert.ToInt32(row[2]);
            person.PLoginName = row[3].ToString();
            person.PCName = row[4].ToString();
            person.PPYName = row[5].ToString();
            person.PPwd = row[6].ToString();
            person.PGender = Convert.ToBoolean(row[7]);
            if (!(row[8] is DBNull) && !(string.IsNullOrEmpty(row[8].ToString())))
            {
                person.PEmail = row[8].ToString();
            }
            person.PAreas = row[9].ToString();
            person.PIsDel = Convert.ToBoolean(row[10]);
            person.PAddTime = Convert.ToDateTime(row[11]);
            person.Cname = row[12].ToString(); //得到班级信息
        }
        #endregion
}
}

 

 
 
 

 

转载于:https://www.cnblogs.com/hehehehehe/p/6063822.html

内容概要:本文详细介绍了一个基于Java和Vue的联邦学习隐私保护推荐系统的设计与实现。系统采用联邦学习架构,使用户数据在本地完成模型训练,仅上传加密后的模型参数或梯度,通过中心服务器进行联邦平均聚合,从而实现数据隐私保护与协同建模的双重目标。项目涵盖完整的系统架构设计,包括本地模型训练、中心参数聚合、安全通信、前后端解耦、推荐算法插件化等模块,并结合差分隐私与同态加密等技术强化安全性。同时,系统通过Vue前端实现用户行为采集与个性化推荐展示,Java后端支撑高并发服务与日志处理,形成“本地训练&mdash;参数上传&mdash;全局聚合&mdash;模型下发&mdash;个性化微调”的完整闭环。文中还提供了关键模块的代码示例,如特征提取、模型聚合、加密上传等,增强了项目的可实施性与工程参考价值。 适合人群:具备一定Java和Vue开发基础,熟悉Spring Boot、RESTful API、分布式系统或机器学习相关技术,从事推荐系统、隐私计算或全栈开发方向的研发人员。 使用场景及目标:①学习联邦学习在推荐系统中的工程落地方法;②掌握隐私保护机制(如加密传输、差分隐私)与模型聚合技术的集成;③构建高安全、可扩展的分布式推荐系统原型;④实现前后端协同的个性化推荐闭环系统。 阅读建议:建议结合代码示例深入理解联邦学习流程,重点关注本地训练与全局聚合的协同逻辑,同时可基于项目架构进行算法替换与功能扩展,适用于科研验证与工业级系统原型开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值