📄 2.anywhere
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: main.c
** Latest modified Date:
** Latest Version: 1.0
** Descriptions: 加密用户应用程序例程
**
**--------------------------------------------------------------------------------------------------------
** Created by:
** Created date:
** Version: 1.0
** Descriptions: The original version
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
*********************************************************************************************************/
/*********************************************************************************************************
头文件包含
*********************************************************************************************************/
#include "config.h"
#include "main.h"
/*********************************************************************************************************
** Function name: ThreadEncrypt
** Descriptions: 用户应用程序加密线程 假设加密密钥为:0xAA 0x55 0x00 0xFF
** input parameters: none
** output parameters: none
** Returned value:
** Created by:
** Created Date:
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void ThreadEncrypt (INT32U ulData)
{
INT8U ucData[64] = {0};
INT8U ucCrpRt[16] = {0};
INT8U ucCalRt[16] = {0};
INT32U i;
ulData = ulData;
while (1) {
/*
* 获得随机数
*/
for (i = 0; i < 64; i++) {
ucData[i] = (INT8U)rand();
}
/*
* 加密端口计算结果
*/
awWriteEx( AW_LOCAL_ADDR, /* 本机操作 */
AW_SET_CRP_DATA_ADDR, /* 加密数据计算端口 */
64, /* 数据长度为64个字节 */
(void*) ucData, /* 加密数据保存缓冲区 */
AW_BYTE_MODE | AW_IO_MODE ); /* 端口属性,不可变 */
awReadEx( AW_LOCAL_ADDR, /* 本机操作 */
AW_GET_CRP_RESULT_ADDR, /* 读取加密计算结果数据端口 */
16, /* 数据长度为16个字节 */
(void*) ucCrpRt, /* 加密计算结果保存缓冲区 */
AW_BYTE_MODE | AW_IO_MODE ); /* 端口属性,不可变 */
/*
* 以下为用户计算结果
*/
/*
* 输入密钥
*/
ucData[12] = 0xAA;
ucData[13] = 0x55;
ucData[14] = 0x00;
ucData[15] = 0xFF;
/*
* 使用MD5算法器,开始计算结果
*/
awWrite(AW_LOCAL_ADDR, AW_INTIT_MD5_ADDR(0), 0); /* 初始化MD5算法器 */
awWriteEx( AW_LOCAL_ADDR, /* 本机操作 */
AW_SET_MD5_DATA_ADDR(0), /* MD5设置校验数据地址 */
64, /* 数据长度为64个字节 */
(void*) ucData, /* 数据保存缓冲区 */
AW_BYTE_MODE | AW_IO_MODE ); /* 端口属性,不可变 */
awReadEx( AW_LOCAL_ADDR, /* 本机操作 */
AW_GET_MD5_RESULT_ADDR(0), /* MD5获得校验结果端口地址 */
16, /* 数据长度为16个字节 */
(void*) ucCalRt, /* 数据保存缓冲区 */
AW_BYTE_MODE | AW_IO_MODE ); /* 端口属性,不可变 */
/*
* 比较计算结果
*/
if (memcmp(ucCrpRt, ucCalRt, 16) != 0) {
/*
* 失败处理
*/
while (1) {
awWrite(AW_LOCAL_ADDR, AW_SYS_ALARM_ADDR, 1); /* 系统报警蜂鸣器鸣叫 */
awWrite(AW_LOCAL_ADDR, AW_TIME_LAG_ADDR, 250); /* 等待时间间隔 */
awWrite(AW_LOCAL_ADDR, AW_SYS_ALARM_ADDR, 0); /* 系统报警蜂鸣器停止鸣叫 */
awWrite(AW_LOCAL_ADDR, AW_TIME_LAG_ADDR, 250); /* 等待时间间隔 */
}
}
awWrite(AW_LOCAL_ADDR, AW_TIME_LAG_ADDR, 500);
}
}
/*********************************************************************************************************
** Function name: main
** Descriptions: 用户主函数
** input parameters: none
** output parameters: none
** Returned value:
** Created by:
** Created Date:
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int main (void)
{
INT32U ulPar[4]; /* 任务参数 */
targetInit(); /* 目标板初始化 */
awWrite(AW_LOCAL_ADDR, AW_SYS_ALARM_ADDR, 0); /* 蜂鸣器停止鸣叫 */
/*
* 创建任务
*/
ulPar[0] = (INT32U)ThreadEncrypt; /* 任务地址 */
ulPar[1] = 0; /* 任务入口参数 */
ulPar[2] = 1024; /* 任务堆栈大小 */
ulPar[3] = 0; /* 任务扩展堆栈大小 */
awWriteEx(AW_LOCAL_ADDR, /* 创建用户应用程序加密线程 */
AW_THREAD_SET_ADDR(0),
4,
ulPar,
AW_IO_MODE | AW_WORD_MODE );
while(1){
awWrite(AW_LOCAL_ADDR, AW_SYS_RUN_ADDR, 1); /* 系统运行指示LED亮 */
awWrite(AW_LOCAL_ADDR, AW_TIME_LAG_ADDR, 250); /* 等待时间间隔 */
awWrite(AW_LOCAL_ADDR, AW_SYS_RUN_ADDR, 0); /* 系统运行指示LED灭 */
awWrite(AW_LOCAL_ADDR, AW_TIME_LAG_ADDR, 250); /* 等待时间间隔 */
}
}
/*********************************************************************************************************
End File
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -