码迷,mamicode.com
首页 > 其他好文 > 详细

网络安全传输系统-sprint3账号管理子系统设计

时间:2020-08-04 11:24:21      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:ali   inux   语言   lin   autoconf   管理数据   数据库应用   条件   关联   

part1:sqlite嵌入式数据库移植

  1、数据库系统构成:访问数据库应用-->管理数据库系统-->数据库存储(自上而下)

  2、数据库中数据以表的形式而存在表与表之间可能存在关联关系(SQL结构化查询语言,用于访问数据库中的数据)

  3、数据库访问语言SQL  

创建表 creat table stu name varchar(10),number small(int)  表名 变量-类型
向表中插入数据 insert into stu values(‘CC‘,1)                   表名 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 stuname varchar(10),number small(int) )";创建sql_db数据库文件

       #test_db sql.db "insert into stu values ( ‘CC‘‘,1 )"; 向数据可中插入数据

       #test_db sql.db "insert into stu values ( ‘HJH‘,2 )";  

       #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=0; i<argc; i++) 
     { //azColName[i]列名,argv[i]列的值
         printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); 
     } 
     printf("\n"); 
    return 0;

} 
   
int main(int argc, char **argv) 
{ 
     sqlite3 *db; 
     char *zErrMsg = 0; 
     int rc; 
     
     if( argc!=3 ) 
     { 
         fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]); 
     } 
     
     /*打开数据库*/
     rc = sqlite3_open(argv[1], &db); 
     
     if( rc ) 
     { 
        fprintf(stderr, "Can‘t open database: %s\n", sqlite3_errmsg(db)); 
        sqlite3_close(db); 
     } 
     
     /*执行sql语言*/
     rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); 
     
     if( rc!=SQLITE_OK ) 
     { 
         fprintf(stderr, "SQL error: %s\n", zErrMsg); 
     }      
     /*关闭数据库*/
     sqlite3_close(db); 
     return 0; 
}

 

part2:账号管理子系统设计

    数据库账号管理子系统,用于管理客户端账号,非允许客户禁止登录服务器。

   流程:1、创建数据库文件sql.db(存储用于信息),存储与客户端目录下;

      2、客户端程序内加入登录验证程序,查询sql_db信息表中是否匹配,错误exit(0)退出。

int login()
{
    char username[10];
    char passwd[10];
    sqlite3* db;

    int success;
    char sql[50];//需要执行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, 0, 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账号管理子系统设计

标签:ali   inux   语言   lin   autoconf   管理数据   数据库应用   条件   关联   

原文地址:https://www.cnblogs.com/ubbdote/p/13432056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!