Измените CLOCK_REALTIME
на CLOCK_PROCESS_CPU_TIME
.
использование sleep()
занимает несколько секунд, чтобы накопить небольшое количество процессорного времени.
#include <stdio.h>
#include <unistd.h>
#include <time.h>
#define BILLION 1E9
int main ( void) {
double executionTime = 0.0001;
double elapsedTime = -1;
double elapsedTimertc = -1;
struct timespec startrtc;
struct timespec start;
struct timespec currentrtc;
struct timespec current;
clock_gettime(CLOCK_REALTIME, &startrtc);
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
for (;;)
{
sleep ( 1);
clock_gettime(CLOCK_REALTIME, ¤trtc);
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, ¤t);
elapsedTime = (current.tv_sec - start.tv_sec) + ((current.tv_nsec - start.tv_nsec) / BILLION);
elapsedTimertc = (currentrtc.tv_sec - startrtc.tv_sec) + ((currentrtc.tv_nsec - startrtc.tv_nsec) / BILLION);
if (elapsedTime >= executionTime)
{
break;
}
}
printf ( "elapsed time %f\n", elapsedTime);
printf ( "elapsed time %f\n", elapsedTimertc);
}
Документация M2Crypto ужасна. Иногда может помочь документация OpenSSL (m2crypto обертывает OpenSSL). Лучше всего взглянуть на модульные тесты M2Crypto - https://gitlab.com/m2crypto/m2crypto/blob/master/tests/test_evp.py - найдите test_AES ( )
метод.
When it comes to security nothing beats reading the documentation.
http://chandlerproject.org/bin/view/Projects/MeTooCrypto
Even if I took the time to understand and make the perfect code for you to copy and paste, you would have no idea if I did a good job or not. Not very helpful I know, but I wish you luck and secure data.
Взгляните на m2secret :
Небольшая утилита и модуль для шифрование и дешифрование данных с помощью алгоритмы с симметричным ключом. По умолчанию использует 256-битный AES (Rijndael) с использованием CBC, но некоторые параметры можно настроить. Алгоритм PBKDF2, используемый для получения ключа из пароля.