完成试验箱测试功能4,5,6以及SM3加密实验的实现算法
掌握Z32安全模块中断的工做原理安全
一、打开“Z32开发指南\实验4-GPIO0按键中断”目录的工程文件。编译工程,产生后缀名为.bin的可执行代码。
二、下载程序
将实验箱接入电源,用USB公对公线将实验箱的USB接口链接到电脑的USB接口上,在电脑上找到“Z32开发指南\2.软件资料\Z32下载调试工具”目录打开Z32下载调试工具NZDownloadTool.exe。打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32便可被电脑识别,进行下载调试。服务器
当左边框出现“1设备已链接”,设备选择中显示芯片型号,此时就能够下载程序了。网络
点击“下载”,左边状态提示框更新显示“程序下载成功!”实验4的程序就下载进Z32的实验板上了。
实验4的内容是按键中断,12864显示屏显示字符。
关闭Z32电源开关,再打开,程序自动运行,此时能够看到实验现象:12864屏幕第一行显示:“请按reboot按键:”
socket
掌握Z32安全模块矩阵键盘的工做原理函数
一、打开“Z32开发指南\实验5-矩阵键盘”目录的工程文件。编译工程,产生后缀名为.bin的可执行代码。工具
二、下载程序
将实验箱接入电源,用USB公对公线将实验箱的USB接口链接到电脑的USB接口上,在电脑上找到“Z32开发指南\2.软件资料\Z32下载调试工具”目录打开Z32下载调试工具NZDownloadTool.exe。打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32便可被电脑识别,进行下载调试。学习
当左边框出现“1设备已链接”,设备选择中显示芯片型号,此时就能够下载程序了。测试
点击“下载”,左边状态提示框更新显示“程序下载成功!”实验5的程序就下载进Z32的实验板上了。
实验5的内容是读矩阵键盘键值并显示。
关闭Z32电源开关,再打开,程序自动运行,此时能够看到实验现象:12864屏幕第一行显示字符串加密
按下矩阵键盘上“A”键,屏幕第二行显示“A”。
掌握Z32安全模块定时器的工做原理
一、打开“Z32开发指南\实验6-TIMER定时器”目录的工程文件。编译工程,产生后缀名为.bin的可执行代码。
二、下载程序
将实验箱接入电源,用USB公对公线将实验箱的USB接口链接到电脑的USB接口上,在电脑上找到“Z32开发指南\2.软件资料\Z32下载调试工具”目录打开Z32下载调试工具NZDownloadTool.exe。打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32便可被电脑识别,进行下载调试。
当左边框出现“1设备已链接”,设备选择中显示芯片型号,此时就能够下载程序了。
点击“下载”,左边状态提示框更新显示“程序下载成功!”实验6的程序就下载进Z32的实验板上了。
实验6的内容是定时器溢出中断,控制LED灯以0.5Hz频率亮灭,并将0~9秒循环计数显示在12864显示屏上。
关闭Z32电源开关,再打开,程序自动运行,此时能够看到实验现象:Z32核心板上的灯L2以0.5Hz频率闪烁,12864屏幕上显示“定时器测试:”,第二行循环显示从0到9的秒计数值。
每隔1秒灯L2亮或灭一次,当计数值为偶数时,灯L2亮,计数值为奇数时,灯L2灭。
一、打开“Z32开发指南\实验10-SM3”目录的工程文件。编译工程,产生后缀名为.bin的可执行代码。
二、下载程序
将实验箱接入电源,用USB公对公线将实验箱的USB接口链接到电脑的USB接口上,在电脑上找到“Z32开发指南\2.软件资料\Z32下载调试工具”目录打开Z32下载调试工具NZDownloadTool.exe。打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32便可被电脑识别,进行下载调试。
当左边框出现“1设备已链接”,设备选择中显示芯片型号,此时就能够下载程序了。
点击“下载”,左边状态提示框更新显示“程序下载成功!”实验10的程序就下载进Z32的实验板上了。
实验9的内容是SM3数据加密实验。本实验使用Z32内置函数库实现加密算法。
咱们用9针串口线将Z32模块的串口与电脑USB接口链接。
首先在电脑上打开串口助手,选择对应的串口号,设置波特率为115200,偶校验(Even),而后打开串口。
关闭Z32电源开关,再打开,程序自动运行,此时能够看到实验现象:液晶屏上显示“SM2实验!请看串口助手”。
串口助手上提示:“请输入须要杂凑的数据(64字节之内),并按A键确认”。
在字符串输入框输入数据“wsq”,点击发送。
按下“A”键后进行,加密,串口调试助手显示被杂凑加密后的数据。
串口助手显示杂凑加密后数据
#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main(int argc, char *argv[]) { int server_sockfd;//服务器端套接字 int client_sockfd;//客户端套接字 int len; struct sockaddr_in my_addr; //服务器网络地址结构体 struct sockaddr_in remote_addr; //客户端网络地址结构体 int sin_size; char buf[BUFSIZ]; //数据传送的缓冲区 memset(&my_addr,0,sizeof(my_addr)); //数据初始化--清零 my_addr.sin_family=AF_INET; //设置为IP通讯 my_addr.sin_addr.s_addr=INADDR_ANY;//服务器IP地址--容许链接到全部本地地址上 my_addr.sin_port=htons(8000); //服务器端口号 /*建立服务器端套接字--IPv4协议,面向链接通讯,TCP协议*/ if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0) { perror("socket"); return 1; } /*将套接字绑定到服务器的网络地址上*/ if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0) { perror("bind"); return 1; } /*监听链接请求--监听队列长度为5*/ listen(server_sockfd,5); sin_size=sizeof(struct sockaddr_in); /*等待客户端链接请求到达*/ if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0) { perror("accept"); return 1; } printf("accept client %s\n",inet_ntoa(remote_addr.sin_addr)); len=send(client_sockfd,"Welcome to my server\n 客户端IP127.0.0.3\n 服务器实现者学号20155206\n 当前时间2018.5.26\n",21,0);//发送欢迎信息 /*接收客户端的数据并将其发送给客户端--recv返回接收到的字节数,send返回发送的字节数*/ while((len=recv(client_sockfd,buf,BUFSIZ,0))>0) { buf[len]='\0'; printf("%s\n",buf); if(send(client_sockfd,buf,len,0)<0) { perror("write"); return 1; } } close(client_sockfd); close(server_sockfd); return 0; }
本次实验在小组三人的共同努力下完成,可是试验箱出现问题,两个实验模块不能同时使用,在同时打开使用时下载进去的代码总有几段是没法运行的;同时,今天小组内检查实验完成状况时,在用超级终端与试验箱链接时总会不停的自动断开,而后再次自动链接,经反复实验,发现是数据线的问题,有点接触不良形成的。