Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Encrypts and decrypts text in Rijndael-256.
- When compiling, make sure you have libmcrypt installed and use the -lmcrypt flag for GCC.
- To install libmcrypt on Ubuntu/Debian/Elementary: (sudo) apt-get install libmcrypt-dev
- Copyright Roemer Bakker - 2015
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <mcrypt.h>
- #include <math.h>
- #include <stdint.h>
- int encrypt(
- void* buffer,
- int buffer_len,
- char* IV,
- char* key,
- int key_len
- ) {
- MCRYPT td = mcrypt_module_open("rijndael-256", NULL, "cbc", NULL);
- int blocksize = mcrypt_enc_get_block_size(td);
- if (buffer_len % blocksize != 0) {return 1;}
- mcrypt_generic_init(td, key, key_len, IV);
- mcrypt_generic(td, buffer, buffer_len);
- mcrypt_generic_deinit(td);
- mcrypt_module_close(td);
- return 0;
- }
- int decrypt(
- void* buffer,
- int buffer_len,
- char* IV,
- char* key,
- int key_len
- ) {
- MCRYPT td = mcrypt_module_open("rijndael-256", NULL, "cbc", NULL);
- int blocksize = mcrypt_enc_get_block_size(td);
- if (buffer_len % blocksize != 0) {return 1;}
- mcrypt_generic_init(td,key,key_len,IV);
- mdecrypt_generic(td,buffer,buffer_len);
- mcrypt_generic_deinit(td);
- mcrypt_module_close(td);
- return 0;
- }
- void display(char* ciphertext,int len) {
- int v;
- for(v=0;v<len;v++) {
- printf("%d",ciphertext[v]);
- }
- printf("\n");
- }
- int main() {
- MCRYPT td, td2;
- char * plaintext= "w0w such secret.";
- char* IV = "AAAAAAAAAAAAAAAA";
- char *key = "0123456789abcdef0123456789abcdef";
- int keysize = 16;
- char* buffer;
- int buffer_len = 16;
- buffer = calloc(1, buffer_len);
- strncpy(buffer, plaintext, buffer_len);
- printf("plain: %s\n", plaintext);
- encrypt(buffer, buffer_len, IV, key, keysize);
- printf("Encrypted: "); display(buffer, buffer_len);
- decrypt(buffer, buffer_len, IV, key, keysize);
- printf("Decrypted: %s\n",buffer);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement