📄 des_2.c
字号:
/*****************************************************************************
* *
* ********** *
* ************ *
* *** *** *
* *** +++ *** *
* *** + + *** *
* *** + CHIPCON CC1010 EXAMPLE PROGRAM *
* *** + + *** Triple DES *
* *** +++ *** *
* *** *** *
* *********** *
* ********* *
* *
*****************************************************************************
* This program demonstrates the use of the halDES() function for encrypting *
* and decrypting data with the supported triple DES OFB and CFB modes. *
* *
*****************************************************************************
* Author: ARR *
*****************************************************************************
* Revision history: *
* 1.0 2002/08/29 First public release *
* *
* $Log: des_2.c,v $
* Revision 1.2 2002/11/18 10:42:03 kht
* Added startup macros
*
* Revision 1.1 2002/10/11 14:56:42 tos
* Initial version in CVS.
*
* *
****************************************************************************/
#include <chipcon/hal.h>
#include <chipcon/cc1010eb.h>
#include <stdlib.h>
#include <string.h>
// Define some constants
#define RND_LENGTH 100
#define KEY_LENGTH 24
// Define the absolute addresses to use in the halDES() function
#define RAMBUF_ADDRESS 0x0000
#define CRPKEY_ADDRESS 0x0100
// Set up RAM buffers for halDES()
byte xdata ramBuf[RND_LENGTH] _at_ RAMBUF_ADDRESS;
byte xdata keyBuf[KEY_LENGTH] _at_ CRPKEY_ADDRESS;
// Arrays which will be initialized with random bytes
byte xdata rndData[RND_LENGTH];
byte xdata rndKeys[KEY_LENGTH];
int main() {
word i;
// Turn off watchdog timer
WDT_ENABLE(FALSE);
// Startup macros for speed and low power consumption
MEM_NO_WAIT_STATES();
FLASH_SET_POWER_MODE(FLASH_STANDBY_BETWEEN_READS);
// All I/Os are inputs after reset. Make I/Os connected to LEDs outputs
RLED=YLED=GLED=BLED=LED_OFF;
RLED_OE(TRUE); YLED_OE(TRUE); GLED_OE(TRUE); BLED_OE(TRUE);
// Fill rndData and rndKeys with random contents
srand(0xABCD);
for (i=0; i<RND_LENGTH; i++)
rndData[i]=rand()%0xFF;
srand(0x1357);
for (i=0; i<KEY_LENGTH; i++)
rndKeys[i]=rand()%0xFF;
// Copy data and key to buffers in XRAM
memcpy(ramBuf, rndData, RND_LENGTH);
memcpy(keyBuf, rndKeys, KEY_LENGTH);
// Encrypt and decrypt data with triple DES OFB mode using the
// halDES() function. Then check to see if succeeded. If so
// light up Yellow LED, otherwise light up Red LED.
halDES(DES_TRIPLE_DES | DES_ENCRYPT | DES_OFB_MODE,
&ramBuf, &keyBuf, RND_LENGTH);
halDES(DES_TRIPLE_DES | DES_DECRYPT | DES_OFB_MODE,
&ramBuf, &keyBuf, RND_LENGTH);
if (memcmp(ramBuf, rndData, RND_LENGTH))
RLED=LED_ON; // Verify failed
else
YLED=LED_ON; // Verify OK
// Encrypt and decrypt data with triple DES CFB mode using the
// halDES() function. Then check to see if succeeded. If so
// light up Green LED, otherwise light up Red LED.
halDES(DES_TRIPLE_DES | DES_ENCRYPT | DES_CFB_MODE,
&ramBuf, &keyBuf, RND_LENGTH);
halDES(DES_TRIPLE_DES | DES_DECRYPT | DES_CFB_MODE,
&ramBuf, &keyBuf, RND_LENGTH);
if (memcmp(ramBuf, rndData, RND_LENGTH))
RLED=LED_ON; // Verify failed
else
GLED=LED_ON; // Verify OK
// Infinite loop
while (1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -