Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <openssl/aes.h>
- #include <vector>
- #include <math.h>
- #include <algorithm>
- using namespace std;
- typedef unsigned char byte_t;
- typedef std::vector<byte_t> bytes_t;
- bytes_t aes_encrypt ( bytes_t& buff, int keylength ) {
- bytes_t aes_key(keylength / 8, 0);
- size_t sz_buff = buff.size();
- bytes_t iv_enc(AES_BLOCK_SIZE, 'q');
- const size_t encslength = ceil((float)sz_buff / AES_BLOCK_SIZE);
- bytes_t enc_out(encslength * AES_BLOCK_SIZE, 0);
- AES_KEY enc_key;
- AES_set_encrypt_key(&aes_key[0], keylength, &enc_key);
- AES_cbc_encrypt(&buff[0], &enc_out[0], sz_buff, &enc_key, &iv_enc[0], AES_ENCRYPT);
- return enc_out;
- }
- bytes_t aes_decrypt ( bytes_t& buff, int keylength ) {
- bytes_t aes_key(keylength / 8, 0);
- size_t sz_buff = buff.size();
- bytes_t iv_dec(AES_BLOCK_SIZE, 'q');
- bytes_t dec_out(sz_buff, 0);
- AES_KEY dec_key;
- AES_set_decrypt_key(&aes_key[0], keylength, &dec_key);
- AES_cbc_encrypt(&buff[0], &dec_out[0], sz_buff, &dec_key,&iv_dec[0], AES_DECRYPT);
- return dec_out;
- }
- void print(const bytes_t& vec) {
- for (auto i = vec.begin(); i != vec.end(); ++i)
- std::cout << (int)*i << ' ';
- std::cout<<std::endl;
- }
- int main()
- {
- bytes_t src(54);
- std::iota (std::begin(src), std::end(src), 0); // Fill with 0, 1, ..., 99.
- src.resize(64);
- print(src);
- bytes_t res = aes_encrypt(src, 256);
- print(res);
- bytes_t res2 = aes_decrypt(res, 256);
- print(res2);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement