网络安全传输系统-sprint3账号管理子系统设计
part1:sqlite嵌入式数据库移植
1、数据库系统构成:访问数据库应用-->管理数据库系统-->数据库存储(自上而下)
2、数据库中数据以表的形式而存在。表与表之间可能存在关联关系(SQL结构化查询语言,用于访问数据库中的数据)
3、数据库访问语言SQL
| 创建表 | creat table stu name varchar(),number small(int) 表名 变量-类型 |
| 向表中插入数据 | insert into stu values('CC',) 表名 name-number |
| 表中查询数据 | select * form stu |
| 表中删除数据 | delete form stu where 范围 |
4、数据库sqlite移植
step1:解压新建_install目录,且配置./configuer --host=arm-linux- --prefix=${PWD}/_install
step2:编译make、make install--->产生Makefile文件
step3:将产生的库函数全部复制到/rootfs/lib/目录下
5、数据库访问应用程序
step1:编译test_db.c文件
arm-linux-gcc test_db.c -I ./sqlite-autoconf-3070800/_install/include/ -L ./sqlite-autoconf-3070800/_install/lib/ -lsqlite3 -o test_db
step2:复制可执行文件test_db到根文件系统中
step3:在开发板上执行命令:
#test_db sql.db "create table stu (name varchar(),number small(int) )";创建sql_db数据库文件
#test_db sql.db "insert into stu values ( 'CC'', )"; 向数据可中插入数据
#test_db sql.db "insert into stu values ( 'HJH', )";
#test_db sql.db "select *from stu;" 提取表里信息
一个简单的数据库应用程序
#include <stdio.h>
#include <sqlite3.h> static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i;
for(i=; i<argc; i++)
{ //azColName[i]列名,argv[i]列的值
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return ; } int main(int argc, char **argv)
{
sqlite3 *db;
char *zErrMsg = ;
int rc; if( argc!= )
{
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[]);
} /*打开数据库*/
rc = sqlite3_open(argv[], &db); if( rc )
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
} /*执行sql语言*/
rc = sqlite3_exec(db, argv[], callback, , &zErrMsg); if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
/*关闭数据库*/
sqlite3_close(db);
return ;
}
part2:账号管理子系统设计
数据库账号管理子系统,用于管理客户端账号,非允许客户禁止登录服务器。
流程:1、创建数据库文件sql.db(存储用于信息),存储与客户端目录下;
2、客户端程序内加入登录验证程序,查询sql_db信息表中是否匹配,错误exit(0)退出。
int login()
{
char username[];
char passwd[];
sqlite3* db; int success;
char sql[];//需要执行sql语句的字符串
//1、通知输入用户名和密码
printf("User name:"); scanf("%s", username);
printf("Password:"); scanf("%s", passwd);
//2、根据用户名,从数据库提取正确的密码
//从tb0表查询密码,where name='%s'从用户名对应的位置查询密码
sprintf(sql, "select passwd from tb0 where name='%s';", username);
sqlite3_open("sql.db", &db); /*a.打开数据库*/
// callback回调函数打印符合条件的密码
sqlite3_exec(db, sql, callback, , NULL); /*b.执行sql语言*/
sqlite3_close(db); /*c.关闭数据库*/
//3、比较用户名输入的密码和数据库提取出的密码,以决定是否登录
success = strcmp(passwd, passwd_d);//passwd用户输入的,passwd_d根据用户名在数据库中查询到的
return success; //成功返回0
}
编译:分别调用openssl加密传输文件,sqlite头文件,openssl和sqlite的库文件 -lssl -lcrypto -lsqlite3

在开发板上新建数据,运行客户端程序,./client 192.168.19.125,安装要求输入账号密码,成功则登录SSL传输
网络安全传输系统-sprint3账号管理子系统设计的更多相关文章
- 阶段3-团队合作\项目-网络安全传输系统\sprint3-账号管理子系统设计\第2课-账号管理子系统设计
账号管理子系统的设计 客户端需要登录到服务器,在服务器去查询数据库,进行验证该用户. 打开client.c文件 编译之 把它复制到开发板里面去 这个程序是在本地数据库测试的!!!!!!!!!!!!!! ...
- 阶段3-团队合作\项目-网络安全传输系统\sprint0-产品规划与设计\第2课-产品功能模型设计
- CentOS学习笔记--账号管理与权限配置
Linux 的账号管理与权限配置 管理员的工作中,相当重要的一环就是『管理账号』啦! 使用者标识符: UID 与 GID 虽然我们登陆 Linux 主机的时候,输入的是我们的账号,但是其实 Linux ...
- Linux 账号管理与 ACL 权限配置
要登陆 Linux 系统一定要有账号与口令才行,否则怎么登陆,您说是吧?不过, 不同的使用者应该要拥有不同的权限才行吧?我们还可以透过 user/group 的特殊权限配置, 来规范出不同的群组开发项 ...
- Linux学习之CentOS(十一)-----Linux 账号管理(转)
Linux 账号管理(转) useraddpasswdchageusermoduserdelfingerchfnchshidgroupaddgroupmodgroupdelgpasswd su(帐号切 ...
- 第十四章、Linux 账号管理与 ACL 权限配置
1. Linux 的账号与群组 1.1 使用者标识符: UID 与 GID 1.2 使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 1.3 关于群组: /etc/gr ...
- CMA内存管理子系统
转:http://www.wowotech.net/memory_management/cma.html 前言 本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文. ...
- EOS基础全家桶(六)账号管理
简介 本篇我们会学习最基本的账号相关的操作,包括了创建账号和查询,关于账号资源的操作因为必须先部署系统合约,所以我们会留到后面单独写一篇来讲解. 6-EOS基础全家桶(六)账号管理 简介 账号介绍 账 ...
- spring事务管理器设计思想(二)
上文见<spring事务管理器设计思想(一)> 对于第二个问题,涉及到事务的传播级别,定义如下: PROPAGATION_REQUIRED-- 如果当前没有事务,就新建一个事务.这是最常见 ...
随机推荐
- scala 数据结构(四):列表 List
1 列表 List-创建List 基本介绍 Scala中的List 和Java List 不一样,在Java中List是一个接口,真正存放数据是ArrayList,而Scala的List可以直接存放数 ...
- 数据可视化之powerBI技巧(十四)采悟:PowerBI中自制中文单位万和亿
使用PowerBI的时候,一个很不爽之处就是数据单位的设置,只能用千.百万等英美的习惯来显示,而没有我们中文所习惯的万亿等单位,虽然要求添加"万"的呼声很高,但迟迟未见到改进动作, ...
- Windows分页文件设置不当导致SQL Server服务被终止
Windows分页文件设置不当导致SQL Server服务被终止 文章说明 在正式开始验证和测试之前,先介绍Windows分页文件和SQL Server的动态内存管理.下面测试将分为两种测试场景:场景 ...
- 媳妇儿让我给她找一个PDF转word免费工具,找了半天我决定给她写一个出来^-^
之前我媳妇儿让我给她找一个PDF转WORD的免费工具,在网上找了半天发现要不就是收费,要不就是转化的格式混乱.既然网上不能找到好用的免费工具那就直接来写一个吧.人生苦短,我用python. 万能的 ...
- J.U.C体系进阶(四):juc-sync 同步器框架
Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-sync 同步器框架 同步器名称 作用 CountDownLatch 倒 ...
- 小书MybatisPlus第5篇-Active Record模式精讲
本文为一个系列中的第五节,前四节访问如下地址: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 小书Mybatis ...
- jupyter中%matplotlib inline报错
学习matplotlib时,使用的jupyter跑代码.报错如上图.大致就是后面的注释不能被识别.我寻思着注释不用识别吧,大概是因为%后跟的语句被全部当成命令行执行了,然后命令行不识别行内注释,导致报 ...
- Python 简明教程 --- 24,Python 文件读写
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 过去的代码都是未经测试的代码. 目录 无论是哪种编程语言,IO 操作都是非常重要的部分.I 即Inp ...
- 线上CUP负载过高排查方法
1.top命令查看线程占据的CPU 注意:上面行的cpu是多个内核的平均CPU,不可能超过100% 下面的cpu是每个进程实际占用的cpu,可能超过100% 备注:查看多个内核cpu,只需要在输入 ...
- 多个activity的博客参考,用mainactivity 调用 明天阅读一下
https://blog.csdn.net/hbwxy521/article/details/53101019