Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <gcrypt.h>
- #include <time.h>
- #include <sys/stat.h>
- //#define GCRY_CIPHER_AES256
- //#define GCRY_KDF_PBKDF2
- void intitializeLibrary();
- int main(int argc, char **argv)
- {
- if(argc ==2){
- char *filename = argv[1];
- printf("The file you've requested to be encrypted is %s \n", filename);
- FILE *ifp, *ifpout;
- char *mode ="rb";
- ifp = fopen(filename, mode);
- ifpout = fopen("output.txt", "w");
- if (ifp == NULL || ifpout == NULL){
- fprintf(stderr, "Can't open file! \n");
- exit(1);
- } else{
- intitializeLibrary();
- struct stat st;
- stat(filename, &st);
- int size = st.st_size;
- char *encBuffer = malloc(32);
- char str[100];
- char keybuffer[32];
- char* salt = "CNT5410";
- char* iv = "assignment222222";
- printf("Enter password: ");
- gcry_cipher_hd_t handle;
- gets(str);
- gpg_error_t err;
- err = gcry_kdf_derive(str, 100, GCRY_KDF_PBKDF2, GCRY_CIPHER_AES256, salt, 7, 3, 32, keybuffer);
- if(err){
- printf("Error in PBKDF2 \n");
- exit(1);
- }
- puts(keybuffer);
- err = gcry_cipher_open(&handle, GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_ECB, 0);
- if(err){
- printf("Error in cipheropen\n");
- exit(1);
- }
- err = gcry_cipher_setkey(handle, keybuffer, 32);
- if(err){
- printf("Error in cipheropen\n");
- exit(1);
- }
- err = gcry_cipher_setiv(handle, iv, 16);
- int bytes;
- while(!feof(ifp)){
- bytes = fread(encBuffer, 1, size, ifp);
- if(!bytes){
- break;
- }
- while(bytes < 32){
- encBuffer[bytes++] = 0x0;
- gcry_cipher_encrypt(handle, encBuffer, size, NULL,0);
- bytes = fwrite(encBuffer, size, 16, ifpout);
- }
- }
- gcry_cipher_close(handle);
- fclose(ifp);
- fclose(ifpout);
- struct stat st2;
- stat(filename, &st2);
- int size2 = st2.st_size;
- err = gcry_cipher_open(&handle, GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_ECB, 0);
- if(err){
- printf("Error in cipheropen\n");
- exit(1);
- }
- err = gcry_cipher_setkey(handle, keybuffer, 32);
- if(err){
- printf("Error in cipheropen\n");
- exit(1);
- }
- err = gcry_cipher_setiv(handle, iv, 16);
- ifp = fopen("output.txt", mode);
- ifpout = fopen(filename, "w");
- while(!feof(ifp)){
- bytes = fread(encBuffer, 1, size2, ifp);
- if(!bytes){
- break;
- }
- while(bytes < 32){
- encBuffer[bytes++] = 0x0;
- gcry_cipher_encrypt(handle, encBuffer, size2, NULL,0);
- bytes = fwrite(encBuffer, 1, size2, ifpout);
- }
- }
- free(encBuffer);
- encBuffer = NULL;
- }
- }else{
- puts("Please enter one file to encrypt");
- }
- return 0;
- }
- void intitializeLibrary(){
- /* Version check should be the very first call because it
- makes sure that important subsystems are intialized. */
- if (!gcry_check_version (GCRYPT_VERSION)){
- fputs ("libgcrypt version mismatch\n", stderr);
- exit (2);
- }
- /* Disable secure memory. */
- gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
- /* ... If required, other initialization goes here. */
- /* Tell Libgcrypt that initialization has completed. */
- gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
- /* Disable secure memory. */
- gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
- /* ... If required, other initialization goes here. */
- /* Tell Libgcrypt that initialization has completed. */
- gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement