Skip to content

Program to encrypt and decrypt images (.pgm) with Paillier cryptosystem. Repository dedicated to an internship in the ICAR team at LIRMM.

License

Notifications You must be signed in to change notification settings

KatiaAuxilien/encryption_images_Paillier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to Cryptosystem Pailler images 👋

Version

Program to encrypt and decrypt images (.pgm) with Paillier cryptosystem. Repository dedicated to an internship in the ICAR team at LIRMM.

📄 Documentation

Installation

Firstly, you need to clone or download the project. Through your usage, we recommend to git pull to update the project.

Then, install g++ version 11.

$ sudo apt install g++-11

You maybe need to install make, so use the command :

$ sudo apt install make

In order that you can compile to each modification, they have at your proposal the make programs in folders main, use the command :

$ make -f [makefile]

Usage

Encryption

$ ./Paillier_pgm_main.out encryption [ARGUMENTS] [FILE.PGM]
$ ./Paillier_pgm_main.out encrypt [ARGUMENTS] [FILE.PGM] 
$ ./Paillier_pgm_main.out enc [ARGUMENTS] [FILE.PGM]
$ ./Paillier_pgm_main.out e [ARGUMENTS] [FILE.PGM]

Decryption

$ ./Paillier_pgm_main.out decryption [PRIVATE KEY FILE .BIN] [FILE.PGM] [ARGUMENTS]
$ ./Paillier_pgm_main.out decrypt [PRIVATE KEY FILE .BIN] [FILE.PGM] [ARGUMENTS]
$ ./Paillier_pgm_main.out dec [PRIVATE KEY FILE .BIN] [FILE.PGM] [ARGUMENTS]
$ ./Paillier_pgm_main.out d [PRIVATE KEY FILE .BIN] [FILE.PGM] [ARGUMENTS] 

The image to encrypt or to decrypt can be specify after the key or the options, or at the end.

Options

P and Q

$ ./Paillier_pgm_main.out encryption [p] [q] [FILE.PGM] 

Encryption mode where you specify p and q arguments. p and q are prime number where pgcd(p * q,p-1 * q-1) = 1.

Keys

-k or -key to specify usage of private or public key, followed by file.bin, your key file.

Encryption mode where you specify your public key file with format .bin.

$ ./Paillier_pgm_main.out encryption -k [PUBLIC KEY FILE .BIN] [FILE.PGM] 
$ ./Paillier_pgm_main.out encryption -key [PUBLIC KEY FILE .BIN] [FILE.PGM]

Decryption mode where you specify your private key with format .bin. The option ``-k` is optional, because it's obligatory to specify private key at decryption.

$ ./Paillier_pgm_main.out decryption -k [PRIVATE KEY FILE .BIN] [FILE.PGM]

Others

-distribution or -distr ou -d to split encrypted pixel on two pixel.

-histogramexpansion ou -hexp to specify during encryption that we want to transform the histogram befor image encryption.

-optlsbr32 or -olsbr32 to specify that we want to use bit compression with encrypted through optimized r generation mod(32), so free 5 LSB.

-optlsbr16 or -olsbr16 to specify that we want to use bit compression with encrypted through optimized r generation mod(16), so free 4 LSB.

Progression

  • Add a -help -h option to print user's guide.
  • Generate documentation with dioxygen.
    • Complete documentation. [in progress]
  • Implement LSB compression.
  • Implement new solution for size encryption. (to make program usable with n > 256)

Author

👤 Auxilien Katia

Supervised by William PUECH

Based on Norman HUTTE's and Bianca JANSEN VAN RENSBURG's code

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2024 Katia Auxilien. This project is MIT licensed.


This README was generated with ❤️ by readme-md-generator

About

Program to encrypt and decrypt images (.pgm) with Paillier cryptosystem. Repository dedicated to an internship in the ICAR team at LIRMM.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published