?? 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 + -