日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Ubuntu环境下,使用clion编译器,使用开源opensll的对称AES算法对于文件进行加密,C++代码

發布時間:2023/12/13 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu环境下,使用clion编译器,使用开源opensll的对称AES算法对于文件进行加密,C++代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前提準備條件

  • 需要安裝openssl
  • 需要安裝openssl-dev
  • 需要配置CMakeLists.txt文件
  • 集體內容可以參考我提供的相關參考鏈接

AES_file.h

#include <openssl/aes.h> #include <iostream> #include <fstream> #include <cstring>#define RELEASE_ARRAY(P) if (P) \ { \delete[] P; \P = NULL; \ }class AES{ public:// AES文件加密函數 ///int TestAesEncryptFile(std::string original_backup_file_path, std::string backup_dir_path, std::string &password){int encrypt_chunk_size = 16;std::ifstream original_backup_file(original_backup_file_path.c_str(), std::ios::binary);std::ofstream backup_dir(backup_dir_path, std::ios::binary);if (!original_backup_file){std::cout << "Can not open original_backup_file file." << std::endl;return 1;}if (!backup_dir){std::cout << "Can not open backup_dir_path file." << std::endl;return 1;}//用指定密鑰對一段內存進行加密,結果放在outbuffer中unsigned char aes_keybuf[32];memset(aes_keybuf, 0, sizeof(aes_keybuf));strcpy((char *)aes_keybuf, password.c_str());AES_KEY aeskey;AES_set_encrypt_key(aes_keybuf, 256, &aeskey);char *in_data = new char[encrypt_chunk_size + 1];char *out_data = new char[encrypt_chunk_size + 1];while (!original_backup_file.eof()){original_backup_file.read(in_data, encrypt_chunk_size);if (original_backup_file.gcount() < encrypt_chunk_size){backup_dir.write(in_data, original_backup_file.gcount());}else{AES_encrypt((const unsigned char *)in_data, (unsigned char *)out_data, &aeskey);backup_dir.write(out_data, original_backup_file.gcount());}};backup_dir.close();original_backup_file.close();RELEASE_ARRAY(in_data);RELEASE_ARRAY(out_data);return 0;}// AES文件解密函數 //int TestAesDecryptFile(std::string in_file_path, std::string out_file_path, std::string &password){int encrypt_chunk_size = 16;std::ifstream original_backup_file(in_file_path.c_str(), std::ios::binary);std::ofstream backup_dir(out_file_path, std::ios::binary);if (!original_backup_file){std::cout << "Can not open original_backup_file file." << std::endl;return 1;}if (!backup_dir){std::cout << "Can not open backup_dir file." << std::endl;return 1;}//用指定密鑰對一段內存進行加密,結果放在outbuffer中unsigned char aes_keybuf[32];memset(aes_keybuf, 0, sizeof(aes_keybuf));strcpy((char *)aes_keybuf, password.c_str());AES_KEY aeskey;AES_set_decrypt_key(aes_keybuf, 256, &aeskey);char *in_data = new char[encrypt_chunk_size + 1];char *out_data = new char[encrypt_chunk_size + 1];while (!original_backup_file.eof()){original_backup_file.read(in_data, encrypt_chunk_size);if (original_backup_file.gcount() < encrypt_chunk_size){backup_dir.write(in_data, original_backup_file.gcount());}else{AES_decrypt((unsigned char *)in_data, (unsigned char *)out_data, &aeskey);backup_dir.write(out_data, original_backup_file.gcount());}};backup_dir.close();original_backup_file.close();RELEASE_ARRAY(in_data);RELEASE_ARRAY(out_data);return 0;} };

main.cpp

#include <iostream> #include "load_or_save_db.h" #include "include/AES_file.h"int main() {time_t t1, t2, t3, t4;t1 = time(nullptr);printf("加解密起始時間: %s\n", ctime(&t1));std::string password = "xcdf123456";AES aes;// 數據開始加密aes.TestAesEncryptFile("/home/gsc/Projects/1.txt", "/home/gsc/Projects/2.txt", password);t2 = time(nullptr);printf("AES256加密成功!\n");printf("加密用時: %ld秒\n", (t2 - t1));t3 = time(NULL);// 數據開始解密aes.TestAesDecryptFile("/home/gsc/Projects/2.txt", "/home/gsc/Projects/3.txt", password);t4 = time(NULL);printf("AES256解密成功!\n");printf("解密用時: %lld秒\n", (t4 - t3));return 0; }

參考鏈接

  • C++: 基于OpenSSL的AES256加解密測試
  • clion中鏈接openssl庫

總結

以上是生活随笔為你收集整理的Ubuntu环境下,使用clion编译器,使用开源opensll的对称AES算法对于文件进行加密,C++代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。