美文网首页
ESP32使用mbedtls库,测试sha、aes等。

ESP32使用mbedtls库,测试sha、aes等。

作者: 昨天剩下的一杯冷茶 | 来源:发表于2019-08-06 11:25 被阅读0次

源码下载地址:
https://download.csdn.net/download/qq_31806069/11483855

1、 sha1

    // sha1  
    printf("\r\nHello test mbedtls sha1 !\r\n");
    mbedtls_sha1_context sha1_ctx;
    mbedtls_sha1_init( &sha1_ctx );
    mbedtls_sha1_starts( &sha1_ctx );
    mbedtls_sha1_update( &sha1_ctx, encrypt, strlen((char *)encrypt) );
    mbedtls_sha1_finish( &sha1_ctx, decrypt);
    printf("input_data:%s \r\nsha1 value:\r\n", encrypt);
    mbedtls_sha1_free( &sha1_ctx );
    for (i = 0; i<20; i++)
    {
        printf("%02x", decrypt[i] );            
    }

2、 sha256/224

    // sha256/224 
    printf("\r\n\r\n\r\nHello test mbedtls sha256/224 !\r\n");
    mbedtls_sha256_context sha256_ctx;
    mbedtls_sha256_init( &sha256_ctx );
    mbedtls_sha256_starts( &sha256_ctx,0 ); // 0 - sha256 1 - sha224
    mbedtls_sha256_update( &sha256_ctx, encrypt, strlen((char *)encrypt) );
    mbedtls_sha256_finish( &sha256_ctx, decrypt);
    printf("input_dataY:%s\r\nsha256 value:\r\n", encrypt);
    mbedtls_sha256_free( &sha256_ctx );
    
    for (i = 0; i<32; i++)
    {
        printf("%02x", decrypt[i] );            
    }

3、 AES ecb

    int i;
    mbedtls_aes_context aes_ctx;
    
    //秘银数值
    unsigned char key[16] = "ECBPASSWD1234";
 
    //明文空间
    unsigned char plain[16] = "ZhangShiSan!!";
    //解密后明文的空间
    unsigned char dec_plain[16]={0};
    //密文空间
    unsigned char cipher[16]={0};
 
    mbedtls_aes_init( &aes_ctx );
    
    //设置加密秘银
    mbedtls_aes_setkey_enc( &aes_ctx, key, 128);
    printf("\r\n\r\n\r\nAES ECB:\r\n Before Encryption: %s\r\n", plain);
    mbedtls_aes_crypt_ecb( &aes_ctx, MBEDTLS_AES_ENCRYPT, plain, cipher);
    
    printf("After encryption:\r\n");
    for (i = 0; i<16; i++)
    {
        printf("%c", cipher[i] );            
    }
    printf(" -End\r\n");
       
    //设置解密秘银
    mbedtls_aes_setkey_dec(&aes_ctx, key, 128);
    mbedtls_aes_crypt_ecb( &aes_ctx, MBEDTLS_AES_DECRYPT, cipher, dec_plain );
    printf("After Decrypt: %s\r\n", dec_plain);
    mbedtls_aes_free( &aes_ctx );

4、 AES cbc

    int i;
    
    mbedtls_aes_context aes_ctx;
    
    //秘银数值
    unsigned char key[16] = "CBCPASSWD1234";
    //iv
    unsigned char iv[16];
    
    //明文空间
    unsigned char plain[64] = "ZhangShiSan!!ZhangShiSan!!ZhangShiSan!!ZhangShiSan!!";
    //解密后明文的空间
    unsigned char dec_plain[64]={0};
    //密文空间
    unsigned char cipher[64]={0};
 
    
    mbedtls_aes_init( &aes_ctx );
    
    //设置加密秘银
    printf("\r\n\r\n\r\nAES CBC:\r\nBefore Encryption: %s\r\n", plain);
    mbedtls_aes_setkey_enc( &aes_ctx, key, 128);
    for(i = 0; i < 16; i++)
    {
        iv[i] = 0x01;
    }
    mbedtls_aes_crypt_cbc(&aes_ctx, MBEDTLS_AES_ENCRYPT, 64, iv, plain, cipher);
    printf("After encryption:");
    for (i = 0; i<64; i++)
    {
        printf("%c", cipher[i] );            
    }
    printf(" -End\r\n");
       
    //设置解密秘银
    mbedtls_aes_setkey_dec(&aes_ctx, key, 128);
    for(i = 0; i < 16; i++)
    {
        iv[i] = 0x01;
    }
    mbedtls_aes_crypt_cbc(&aes_ctx, MBEDTLS_AES_DECRYPT, 64, iv, cipher, dec_plain);
    printf("After Decrypt %s\r\n", dec_plain);
    printf("\r\n");
    mbedtls_aes_free( &aes_ctx );

效果:


image.png

相关文章

网友评论

      本文标题:ESP32使用mbedtls库,测试sha、aes等。

      本文链接:https://www.haomeiwen.com/subject/vpridctx.html