用户工号转为密码,记录几个函数

本文介绍了如何通过SQL语句,将用户表中的工号后4位转化为MD5加密形式,并将其作为用户密码。步骤包括选取用户ID和MD5加密后的密码,创建新表导入数据,最后更新原有用户表的密码字段。这种方法适用于批量处理大量用户数据的安全加密。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库有大量用户数据,现需求需要将用户的工号后4位转为密码,并md5加密。(通过SQL语句方式简单处理 不写代码),现记录一下所使用的语句和函数。

 

step1.

SELECT id,UPPER(MD5(SUBSTRING(account,CHAR_LENGTH(account)-3,4)) ) AS pwd FROM user ;

备注:将用户表的工号后4位转换为md5并大写 查出来

 

step2.

将第一步查出来的信息转为sql文件,并将这些数据导入一张新建的表中

 

step3.

再将新表的数据更新到用户表的密码字段中,一句简单update搞定。

UPDATE user g SET pwd = (SELECT pwd FROM zc gg WHERE g.id = gg.id)
 

好的,下面是一个简单的实现: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义用户信息结构体 typedef struct { char id[10]; char password[20]; } User; // 登录函数 void login() { // 读取用户信息文件 FILE* fp = fopen("userinfo.dat", "rb"); if (!fp) { printf("用户信息文件打开失败!\n"); return; } // 读取用户数量 int count; fread(&count, sizeof(count), 1, fp); // 读取每个用户的信息 User* users = (User*)malloc(count * sizeof(User)); fread(users, sizeof(User), count, fp); // 关闭文件 fclose(fp); // 输入工号密码 char id[10], password[20]; printf("请输入工号:"); scanf("%s", id); printf("请输入密码:"); scanf("%s", password); // 验证工号密码 int found = 0; for (int i = 0; i < count; i++) { if (strcmp(id, users[i].id) == 0 && strcmp(password, users[i].password) == 0) { found = 1; break; } } // 输出结果 if (found) { printf("登录成功!\n"); } else { printf("工号密码错误!\n"); } // 释放内存 free(users); } ``` 该函数首先会读取保存了用户信息的二进制文件 `userinfo.dat`,然后要求用户输入工号密码,最后在读取的用户信息中查找是否有匹配的工号密码。如果有,输出登录成功,否则输出错误信息。 需要注意的是,`userinfo.dat` 文件的格式应该是先保存一个 `int` 类型的用户数量,然后依次保存每个用户工号密码,每个用户工号密码都是一个 `User` 结构体。在这里假设每个工号不超过 10 个字符,每个密码不超过 20 个字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值