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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用openssl完成aes-ecb模式的数据加解密,输入和输出都是字符串类型

發布時間:2023/12/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用openssl完成aes-ecb模式的数据加解密,输入和输出都是字符串类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼

#include <cstring> #include <memory>#include <openssl/aes.h> #include <openssl/md5.h>namespace hsm{namespace mgmt{void get_md5_digest(const std::string &data,uint8_t result[16]){MD5_CTX md5_ctx{};MD5_Init(&md5_ctx);MD5_Update(&md5_ctx,data.c_str(),data.length());MD5_Final(result,&md5_ctx);} /*** @brief generate a valid aes key from input password** @note AES only support keys with length 128/192/256bits* @note this implementation use md5 as a method to fix the password*/std::unique_ptr<AES_KEY> get_aes_key(const std::string &password,int flag){auto aes_key = std::make_unique<AES_KEY>();uint8_t data[16]{};get_md5_digest(password,data);if (flag == AES_ENCRYPT){AES_set_encrypt_key(data,sizeof(data)*8,aes_key.get());} else if (flag == AES_DECRYPT){AES_set_decrypt_key(data,sizeof(data)*8,aes_key.get());}return aes_key;}std::string aes_ecb_encrypt_to_string(const std::string &data,const std::string &password){auto aes_key = get_aes_key(password,AES_ENCRYPT);std::string result(data.length(),'0');auto input_offset = reinterpret_cast<const uint8_t *>(data.c_str());auto output_offset = reinterpret_cast<uint8_t *>(&result[0]);//encrypt blocksfor (size_t i = 0; i < data.length() / AES_BLOCK_SIZE ; ++i) {AES_ecb_encrypt(input_offset,output_offset,aes_key.get(),AES_ENCRYPT);input_offset += AES_BLOCK_SIZE;output_offset += AES_BLOCK_SIZE;}//write rest od data to fileauto rest_input_length = data.length() % AES_BLOCK_SIZE;if (rest_input_length > 0 ){std::memcpy(output_offset,input_offset,rest_input_length + 1);}return result;}std::string aes_ecb_decrypt_from_string(const std::string &enc_data,const std::string &password){auto aes_key = get_aes_key(password,AES_DECRYPT);std::string result(enc_data.length(),'0');auto input_offset = reinterpret_cast<const uint8_t *>(enc_data.c_str());auto output_offset = reinterpret_cast<uint8_t *>(&result[0]);//decrypt blocksfor (size_t i = 0;i < enc_data.length() / AES_BLOCK_SIZE;i++){AES_ecb_encrypt(input_offset,output_offset,aes_key.get(),AES_DECRYPT);input_offset += AES_BLOCK_SIZE;output_offset += AES_BLOCK_SIZE;}//decrypt rest of dataauto rest_input_length = enc_data.length() % AES_BLOCK_SIZE;if (rest_input_length > 0 ){std::memcpy(output_offset,input_offset,rest_input_length + 1);}return result;}}//namespace mgmt }//namespace hsm

?

總結

以上是生活随笔為你收集整理的使用openssl完成aes-ecb模式的数据加解密,输入和输出都是字符串类型的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 精品一区免费观看 | 精品中文一区二区三区 | 舐丝袜脚视频丨vk | 国产一级片麻豆 | 91精品国产高清91久久久久久 | 超碰日本 | 香蕉视频一区二区三区 | 国产日产亚洲精品 | 国产性70yerg老太 | 国产精品高潮呻吟av | 天天综合亚洲 | 91porny九色| 久久久视频在线观看 | 看av网址 | 性三级视频| 国产情侣91 | 91ts人妖另类精品系列 | 福利在线看 | 国产又粗又黄的视频 | 国产中文字幕一区二区三区 | 奇米av在线 | 国内一区二区视频 | 三级国产在线观看 | jizz国产精品 | 中出 在线 | 男女在线免费观看 | 婷婷六月网 | 6080午夜 | 岛国av噜噜噜久久久狠狠av | 久久久久18 | 亚洲码国产精品高潮在线 | 亚洲精品中文字幕在线播放 | 国产乱码一区二区 | 国产精品.www| 亚洲再线 | 天码人妻一区二区三区在线看 | 暴操白虎 | 日韩不卡高清视频 | 欧美黄色网络 | 久久久伦理片 | 激情综合丁香五月 | 精品一区二区三区四区五区 | 天堂中文在线免费观看 | 亚洲精品中文字幕乱码三区91 | 国产尤物av尤物在线看 | 黄色av一级片| 蜜桃av在线| 国内免费av| 丰满大乳国产精品 | 最新中文字幕在线观看 | 视频福利一区 | 视频国产一区 | 成人动漫在线观看视频 | 夜色一区二区三区 | 波多野结衣av在线免费观看 | 涩婷婷| 色 综合 欧美 亚洲 国产 | 精品国产高清在线观看 | 亚洲天堂五码 | 欧美一级高清片 | 中国 免费 av | 中文字幕日韩高清 | 国语对白做受xxxxx在线中国 | 日韩性猛交ⅹxxx乱大交 | 在线观看日韩国产 | 国产情侣自拍一区 | 手机在线免费视频 | 日韩色av | 国产自产21区 | 波多野结衣丝袜 | 欧美日韩另类在线 | 玩弄人妻少妇500系列 | 久久亚洲国产成人精品性色 | 免费在线国产 | 妺妺窝人体色www在线小说 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 黄色片免费网站 | 美女少妇av | 欧美深夜福利 | 你懂的国产 | 九月婷婷 | 亚洲欧美综合另类自拍 | 野花视频在线观看免费 | 国产精品久久久久9999 | 国产伦精品一区二区三区视频网站 | 国产五月 | 日本一区视频在线观看 | 午夜av在线免费观看 | 色婷婷亚洲一区二区三区 | 亚洲欧美一区在线 | 熟睡人妻被讨厌的公侵犯 | 欧美日韩三级 | 精品视频在线看 | 香蕉色网 | 精品av一区二区 | 欧美巨乳在线 | 亚洲天堂免费看 | 成人精品在线看 | 制服诱惑一区二区三区 |