现在高级点的MCU都会带AES加密引擎,软件算有延迟硬件基本可以数据发出结果就马上返回,软件加密库可参考mbedTLS,现在信息安全也是很重要通讯数据,存储数据都会进行加密存储以防被破解防制,我写程序的习惯都是对于上层或应用来说都是很友好,crypt_read(CARD_MANAGE_TypeDef *card_manage,uint16_t addr, uint16_t len, uint8_t *ptr)、crypt_write(CARD_MANAGE_TypeDef *card_manage,uint16_t addr, uint16_t len, uint8_t *ptr) 读写2个函数
#include "system.h"
#include "crypt.h"
#include "at88sc.h"
#include "smartcard.h"
//#include "aes.h"
#include "secure_storage.h"
#include "string.h"
//#include "aes.h"
#include "stm32f4xx_hal.h"
#undef CRYPT_DEBUG
#ifdef CRYPT_DEBUG
#define crypt_log(...) do{if(DEBUG(DEBUG_ENABLE)){DBG_LOG("[CRYPT](%ld) ",__LINE__);DBG_LOG(__VA_ARGS__);}}while(0)
#define crypt_usr(...) do{if(DEBUG(DEBUG_ENABLE)){DBG_LOG("[CRYPT] ");DBG_USR(__VA_ARGS__);}}while(0)
#define crypt_err(...) do{if(DEBUG(DEBUG_ENABLE)){DBG_LOG("[CRYPT] ");DBG_ERR(__VA_ARGS__);}}while(0)
#define crypt_dump(...) if(DEBUG(DEBUG_ENABLE)){DBG_DUMP(__VA_ARGS__);}
#else
#define crypt_log(...)
#define crypt_usr(...)
#define crypt_err(...)
#define crypt_dump(...)
#endif
CRYP_InitTypeDef init;
CRYP_HandleTypeDef hcryp;
DMA_HandleTypeDef hdma_cryp_in;
DMA_HandleTypeDef hdma_cryp_out;
xSemaphoreHandle crypt_semaphore;
uint8_t crypt_complete=0;
extern void Error_Handler(SYSTEM_ERROR_CODE_TypeDef errorCode);
/**
* @brief CRYP MSP Initialization
* This function configures the hardware resources used in this example
* @param hcryp: CRYP handle pointer
* @retval None
*/
void HAL_CRYP_MspInit(CRYP_HandleTypeDef* hcryp)
{
if(hcryp->Instance==CRYP)
{
/* USER CODE BEGIN CRYP_MspInit 0 */
/* USER CODE END CRYP_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_CRYP_CLK_ENABLE();
/* CRYP interrupt Init */
HAL_NVIC_SetPriority(CRYP_IRQn, 14, 0);
HAL_NVIC_EnableIRQ(CRYP_IRQn);
/* USER CODE BEGIN CRYP_MspInit 1 */
/* USER CODE END CRYP_MspInit 1 */
}
}
/**
* @brief CRYP MSP De-Initialization
* This function freeze the hardware resources used in this example
* @param hcryp: CRYP handle pointer
* @retval None
*/
void HAL_CRYP_MspDeInit(CRYP_HandleTypeDef* hcryp)
{
if(hcryp->Instance==CRYP)
{
/* USER CODE BEGIN CRYP_MspDeInit 0 */
/* USER CODE END CRYP_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_CRYP_CLK_DISABLE();
/* CRYP interrupt DeInit */
HAL_NVIC_DisableIRQ(CRYP_IRQn);
/* USER CODE BEGIN CRYP_MspDeInit 1 */
/* USER CODE END CRYP_MspDeInit 1 */
}
}
static void MX_CRYP_Init(uint8_t *key)
{
/* USER CODE BEGIN CRYP_Init 0 */
/* USER CODE END CRYP_Init 0 */
/* USER CODE BEGIN CRYP_Init 1 */
/* USER CODE END CRYP_Init 1 */
hcryp.Instance = CRYP;
hcryp.Init.DataType = CRYP_DATATYPE_8B;
hcryp.Init.KeySize = CRYP_KEYSIZE_256B;
hcryp.Init.pKey = (uint8_t *)key;
if (HAL_CRYP_Init(&hcryp) != HAL_OK)
{
// Error_Handler();
}
/* USER CODE BEGIN CRYP_Init 2 */
/* USER CODE END CRYP_Init 2 */
}
/**
* Enable DMA controller clock
*/
static void MX_DMA_Init(void)
{
/* DMA controller clock enable */
__HAL_RCC_DMA2_CLK_ENABLE();
/* DMA interrupt init */
/* DMA2_Stream5_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Stream5_IRQn, 14, 0);
HAL_NVIC_EnableIRQ(DMA2_Stream5_IRQn);
/* DMA2_Stream6_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 14, 0);
HAL_NVIC_EnableIRQ(DMA2

高级MCU带有AES加密引擎,硬件加密可使数据发出后马上返回结果,软件加密库可参考mbedTLS。信息安全重要,通讯和存储数据常加密。还给出了读写函数示例,对上层或应用友好。
最低0.47元/天 解锁文章
821

被折叠的 条评论
为什么被折叠?



