自己做的AES-ECB加密解密,有些问题想请教一下

2019-07-20 20:00发布

手头的事情要给数据进行加密,我用的是AES-ECB加密方式。
现在程序中加密已经调试好了,能用串口显示出来。
但是解密上遇到以下几个问题:
一、串口调试助手能显示出原来的明文,但是明文之后还有一长串不知名的数据不知道从哪来的
二、烧好程序后需要等待一段时间(30S左右)调试程序才能显示出数据
希望各位大大们帮我看看啊,小弟不胜感激。
程序在下面。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
cp9559
2019-07-20 23:50
这是具体的加密解密操作

#include "aes.h"

uchar8_t encryptdata[1000];
uchar8_t decryptdata[160];

void DATA_AES_ENCRYPT(int Len1, uchar8_t* ERes)
{
int j=0;       
int i=0,k=0;
       
aes_context ctx;
uchar8_t Ebuf[16];

uchar8_t key[32] =  {
                                        0x61, 0x65, 0x31, 0x32, 0x35, 0x65, 0x66, 0x6b, 0x6b, 0x34, 0x34, 0x35, 0x34, 0x65, 0x65, 0x66 //0
                                  ,0x66, 0x34, 0x34, 0x34, 0x66, 0x65, 0x72, 0x66, 0x6b, 0x6e, 0x79, 0x36, 0x6f, 0x78, 0x69, 0x38 //1
                                         };
                       
                        for(i=0;i<Len1;i++)                         
                        {                       
          Ebuf[i%16]=*ERes;
                                  ERes++;       
                                if((i>0) && (i%16==15))
                                {
                                aes_init(&ctx, key);                                         
        aes_encrypt_ecb(&ctx, Ebuf);
                               
                                        for(k=0;k<16;k++)                         
                             {       
                                          encryptdata[k+16 * j]=Ebuf[k];                                       
                             }               
                                j++;
                               
                                }
                                                               
                  }
                        if((Len1%16)!=0)
                        {
                                for(i=0;i<(16-Len1%16);i++)                         
                                {                       
                                                Ebuf[i+Len1%16]=0xFF;       
                                }                       
                                aes_init(&ctx, key);       
                                aes_encrypt_ecb(&ctx, Ebuf);
                                        for(i=0;i<16;i++)                         
                                         {       
                                                        encryptdata[i+16 * j]=Ebuf[i];                                       
                                         }
                               
                        }
                                                 
    aes_done(&ctx);
               
}

void DATA_AES_DECRYPT(int Len2, uchar8_t* DRes)
{
int l=0;       
int m=0,n=0;
       
aes_context ctx;
uchar8_t Dbuf[16];

uchar8_t key[32] = {
                                        0x61, 0x65, 0x31, 0x32, 0x35, 0x65, 0x66, 0x6b, 0x6b, 0x34, 0x34, 0x35, 0x34, 0x65, 0x65, 0x66 //0
                                  ,0x66, 0x34, 0x34, 0x34, 0x66, 0x65, 0x72, 0x66, 0x6b, 0x6e, 0x79, 0x36, 0x6f, 0x78, 0x69, 0x38 //1
                                         };
                       
                        for(m=0;m<Len2;m++)                         
                        {                       
          Dbuf[m%16]=*DRes;
                                  DRes++;       
                                if((m>0) && (m%16==15))
                                {
                                aes_init(&ctx, key);                                         
        aes_decrypt_ecb(&ctx, Dbuf);
                               
                                        for(n=0;n<16;n++)                         
                             {       
                                          decryptdata[n+16 * l]=Dbuf[n];                                       
                             }               
                                l++;
                               
                                }
                                                               
                  }       
                       
    aes_done(&ctx);
               
}

一周热门 更多>