Kodowanie mCrypt

Zachęcam do zapoznania się systemów kodowania plików oraz tekstów. Poniżej przedstawie prostą aplikacje do kodowania wiadomości oraz plików. System można wykorzystać jako bezpieczny kanał informacji między użytkownikami.

 

Przykłady aplikacji:

 

Class Encryption:

Encryption Class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
class Encryption{
	/*
		Autor: Damian Sulmowski
		www: http://www.sulmowski.eu
		email: damian@sulmowski.eu
	*/
 
	private $td;
	private $key;
 
	/* INIT function to register Encryption*/
	public function init($choice){
		if ($choice == '1'){
			$td = mcrypt_module_open (MCRYPT_DES, '', 'ecb', '');
		}elseif ($choice == '2'){
			$td = mcrypt_module_open (MCRYPT_3DES, '', 'ecb', '');
		}elseif ($choice == '3'){
			$td = mcrypt_module_open (MCRYPT_RIJNDAEL_128, '', 'ecb', '');
		}elseif ($choice == '4'){
			$td = mcrypt_module_open (MCRYPT_GOST, '', 'ecb', '');
		}
		$this->td = $td;
	}
 
	/* Get size char key to crypt */
	public function getSizeKey(){
		return mcrypt_enc_get_key_size($this->td);
	}
 
	/* Get random key */
	public function getRandomKey(){
		srand ((double) microtime() * 1000000);
  		return substr(md5(uniqid(rand())),0,$this->getSizeKey());
	}
 
	/* Set key to crypt */
	public function key($key){
		$this->key =substr($key,0,mcrypt_enc_get_key_size($this->td));
	}
 
	/* Function to encypt string */
	public function encrypt($string) {
		$iv_size = mcrypt_enc_get_iv_size($this->td);
		$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
		if (mcrypt_generic_init($this->td, $this->key, $iv) != -1) {
			$c_t = mcrypt_generic($this->td, $string);
			mcrypt_generic_deinit($this->td);
			mcrypt_module_close($this->td);
			$c_t = $iv.$c_t;
			return trim($c_t);
		}
		return false;
	}
 
	/* Function to decypt string */
	public function decrypt($string) {
		$iv_size = mcrypt_enc_get_iv_size($this->td);
		$iv = substr($string,0,$iv_size);
		$string = substr($string,$iv_size);
		if (mcrypt_generic_init($this->td, $this->key, $iv) != -1) {
			$c_t = mdecrypt_generic($this->td, $string);
			mcrypt_generic_deinit($this->td);
			mcrypt_module_close($this->td);
			return trim($c_t);
		}
		return false;
	}
}

 

Użyj jako encrypt (szyfrowanie):

Encrypt
1
2
3
4
5
6
7
$crypt=new Encryption;
// Encrypt as DES
$crypt->init('1');
// Your secret key
$crypt->key('#^%^&GdsSDA^&asd34dfs');
// Your msg
$cryptMsg=$crypt->encrypt('Message to encrypt');

 

Użyj jako decrypt (odszyfrowywanie):

1
2
3
4
5
6
7
$crypt=new Encryption;
// Decrypt as DES
$crypt->init('1');
// Your secret key
$crypt->key('#^%^&GdsSDA^&asd34dfs');
// Your msg
$cryptMsg=$crypt->decrypt('Message to decrypt');

 

Rodzaje szyfrowań:

1
2
3
4
init(1) -> MCRYPT_DES
init(2) -> MCRYPT_3DES
init(3) -> MCRYPT_RIJNDAEL_128
init(4) -> MCRYPT_GOST