Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

60 Zeilen
1.7KB

  1. #if defined(_OPENSSL_)
  2. #include "openssl/aes.h"
  3. #include <stdint.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <assert.h>
  7. #include <stdio.h>
  8. #pragma comment(lib, "../../3rd/openssl/libssl.lib")
  9. #pragma comment(lib, "../../3rd/openssl/libcrypto.lib")
  10. void ts_encrypt_test(const char* keyfile, const char* file, const char* outfile)
  11. {
  12. uint8_t key[AES_BLOCK_SIZE]; // AES-128
  13. FILE* keyfp = fopen(keyfile, "rb");
  14. assert(sizeof(key) == fread(key, 1, sizeof(key), keyfp));
  15. fclose(keyfp);
  16. AES_KEY aes;
  17. assert(0 == AES_set_encrypt_key(key, 128, &aes));
  18. uint8_t iv[AES_BLOCK_SIZE] = { 0 };
  19. uint8_t in[AES_BLOCK_SIZE];
  20. uint8_t out[AES_BLOCK_SIZE];
  21. FILE* infp = fopen(file, "rb");
  22. FILE* outfp = fopen(outfile, "wb");
  23. while (1 == fread(in, sizeof(in), 1, infp))
  24. {
  25. AES_cbc_encrypt(in, out, sizeof(out), &aes, iv, AES_ENCRYPT);
  26. assert(1 == fwrite(out, sizeof(out), 1, outfp));
  27. }
  28. fclose(infp);
  29. fclose(outfp);
  30. }
  31. void ts_decrypt_test(const char* keyfile, const char* file, const char* outfile)
  32. {
  33. uint8_t key[AES_BLOCK_SIZE]; // AES-128
  34. FILE* keyfp = fopen(keyfile, "rb");
  35. assert(sizeof(key) == fread(key, 1, sizeof(key), keyfp));
  36. fclose(keyfp);
  37. AES_KEY aes;
  38. assert(0 == AES_set_decrypt_key(key, 128, &aes));
  39. uint8_t iv[AES_BLOCK_SIZE] = { 0 };
  40. uint8_t in[AES_BLOCK_SIZE];
  41. uint8_t out[AES_BLOCK_SIZE];
  42. FILE* infp = fopen(file, "rb");
  43. FILE* outfp = fopen(outfile, "wb");
  44. while (1 == fread(in, sizeof(in), 1, infp))
  45. {
  46. AES_cbc_encrypt(in, out, sizeof(out), &aes, iv, AES_DECRYPT);
  47. assert(1 == fwrite(out, sizeof(out), 1, outfp));
  48. }
  49. fclose(infp);
  50. fclose(outfp);
  51. }
  52. #endif