Php dosya şifreleme yöntemleri.

4 Cevap php

Bu php bir dosyayı şifrelemek için herhangi keyifli bir yol yok gibi görünüyor bulunuyor.

Php yöntemleri inşa, mcrypt, en sunucuları onlara destek yok gibi çok taşınabilir değil.

Komut satırı şifreleme araçları çirkin kesmek gibidir.

Orada güzel dizeler için şifreleme var, ama biz bir dosyayı şifrelemek istiyorsanız bu şifrelemeyi başkası için çok özellikle yardımcı olmuyor.

Diğer şifreleme araçları Bunlar çok çok sadece bir dosyayı şifrelemek için karmaşık görünebilir kamu anahtarlarını, anahtarlık, özel anahtarları, kan örneği ... gerektirir.

Biz sadece bu yüzden gibi işe yarayabilir PHP için basit bir işlevi olması gerektiğini görünüyor:

$crypt = new Crypt();
$crypt->encryptFile("Password1245!", 'secret_file.txt', 'encrypted_file.txt');
$crypt->decryptFile("Password1245!", 'encrypted_file.txt', 'original_file.txt');

Herhangi biri herhangi bir fikirleri var mı? Ben saçını çekerek yaşıyorum!

EDIT: Another thing I should add, for the end user to be able to decrypt the file with ease.

Basically I'm trying to find something that can replace a password protected zip file

4 Cevap

PEAR encryption packages bir göz atın. Hepsi mcrypt güvenmeyin - örneğin Crypt_Blowfish.

Eğer yüklü mcrypt uzantısı olan sakıncası yoksa, bu kod bunu yapmalıyım:

function Encrypt($string, $key)
{
    if (extension_loaded('mcrypt') === true)
    {
    	return base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH, substr($key, 0, mcrypt_get_key_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB)), trim($string), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB), MCRYPT_RAND)));
    }

    return false;
}

function Decrypt($string, $key)
{
    if (extension_loaded('mcrypt') === true)
    {
    	return trim(mcrypt_decrypt(MCRYPT_BLOWFISH, substr($key, 0, mcrypt_get_key_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB)), base64_decode($string), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB), MCRYPT_RAND)));
    }

    return false;
}

function Encrypt_File($source, $destination, $key)
{
    if (extension_loaded('mcrypt') === true)
    {
    	if (is_file($source) === true)
    	{
    		$source = file_get_contents($source);

    		if (file_put_contents($destination, Encrypt($source, $key), LOCK_EX) !== false)
    		{
    			return true;
    		}
    	}
    }

    return false;
}

function Decrypt_File($source, $destination, $key)
{
    if (extension_loaded('mcrypt') === true)
    {
    	if (is_file($source) === true)
    	{
    		$source = file_get_contents($source);

    		if (file_put_contents($destination, Decrypt($source, $key), LOCK_EX) !== false)
    		{
    			return true;
    		}
    	}
    }

    return false;
}

ne basit xor hakkında?

function Crypt($source, $key)
{
 $rv='';
 for($i=0;$i<strlen($source);$i++)
 {
  $rv.=chr(ord($source[$i]) ^ ord($key[$i%strlen($key)]));
 }
 return $rv;
}

=> Crypt (Crypt ('aaa', 'anahtar'), 'anahtar') döndürüyor 'aaa'.

EDIT: Tabii, kullanmak gerekir

file_put_contents(Crypt(file_get_contents('file'), 'key'));

dosya için + yazma:]

Yossarian'ın Crypt () fonksiyonu sabit:

function _Crypt($source, $key)
{
    $result = '';

    for($i = 0; $i < strlen($source); $i++)
    {
    	$result .= chr(ord($source[$i]) ^ ord($key[$i % strlen($key)]));
    }

    return $result;
}

_Crypt('aaa', 'key'); // 
_Crypt(_Crypt('aaa', 'key'), 'key'); // aaa