PHP AES256 şifresinin yapmak nasıl?

2 Cevap php

Ben şifresini gereken bir metin şifreli bit var. Bu AES-256-CBC ile şifrelenmiş. Ben şifreli metni, anahtar, ve iv var. Ancak, ne ben ne deneyin Ben sadece çalışmak için görünmüyor olabilir.

İnternet Mcrypt en Rijndael cypher bunu yapmak mümkün olması gerektiğini önerdi, işte ben şimdi ne var:

function decrypt_data($data, $iv, $key) {
	$cypher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');

	// initialize encryption handle
	if (mcrypt_generic_init($cypher, $key, $iv) != -1) {
		// decrypt
		$decrypted = mdecrypt_generic($cypher, $data);

		// clean up
		mcrypt_generic_deinit($cypher);
		mcrypt_module_close($cypher);

		return $decrypted;
	}

	return false;
}

Bu haliyle ben 2 uyarıları almak ve çıkış anlamsız olduğunu:

Warning: mcrypt_generic_init() [function.mcrypt-generic-init]: Key size too large; supplied length: 64, max: 32 in /var/www/includes/function.decrypt_data.php on line 8
Warning: mcrypt_generic_init() [function.mcrypt-generic-init]: Iv size incorrect; supplied length: 32, needed: 16 in /var/www/includes/function.decrypt_data.php on line 8

Herhangi bir yardım mutluluk duyacağız.

2 Cevap

Bu malzeme ile korkunç aşina değilim, ama MCRYPT_RIJNDAEL_128 bariz bir sonraki adım olacaktır yerine MCRYPT_RIJNDAEL_256 çalışıyor gibi görünüyor ...

Edit: Haklısın - Bu ne ihtiyaç değildir. MCRYPT_RIJNDAEL_128 Aslında doğru seçim olduğunu. Verdiğiniz linke göre, anahtar ve IV iki kat daha uzun olması gerektiği gibidir:

// How do you do 256-bit AES encryption in PHP vs. 128-bit AES encryption???
// The answer is:  Give it a key that's 32 bytes long as opposed to 16 bytes long.
// For example:
$key256 = '12345678901234561234567890123456';
$key128 = '1234567890123456';

// Here's our 128-bit IV which is used for both 256-bit and 128-bit keys.
$iv =  '1234567890123456';

Ne bu bağlantı hakkında? Ben yararlı olduğunu düşünüyorum

http://www.phpclasses.org/package/4238-PHP-Encrypt-and-decrypt-data-with-AES-in-pure-PHP.html