как зашифровать текстовый документ с помощью открытого ключа в php

У меня проблема, я хочу зашифровать документы Word (у которых всего 10 КБ) с помощью открытого ключа, а он должен расшифровывать с помощью закрытого ключа. Я уже создал пару ключей, используя библиотеку phpseclib. http://phpseclib.sourceforge.net/crypt/examples.html, и я могу шифровать и расшифровать строку с помощью этой библиотеки. но я не знаю, как зашифровать файл с помощью пары ключей. есть ли способ для этого (или с помощью file_get_contents) спасибо за все

<?php

//create word docx using phpdocx
require("phpDocx.php"); 
    $phpdocx = new phpdocx("word_temp\loan_app_temp.docx");
                                //assign
                                $upfno='999';
                                $loanid_db='1234';
                                $phpdocx->assign("#upfno#","$upfno"); 
                                $phpdocx->assign("#loanid#","$loanid_db"); 
                                $phpdocx->assign("#fullname#","$name"); 
                                $phpdocx->assign("#initials#","$initials"); 

                                $phpdocx->save("word_gen\loan_docs\la_".$upfno."_".$loanid_db.".docx"); // sucessfully created.

// create key pair using phpseclib
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('phpseclib/Crypt/RSA.php');
$rsa = new Crypt_RSA();
//$rsa->setPassword('layanthi@123');
extract($rsa->createKey());
//echo "$privatekey<br />$publickey";
echo $privatekeydata=$privatekey;
echo '<br />';
echo $pubkey=$publickey;  //key pair genarated - ok

//encryption using pubkey - commented snippet from phpseclib
$file="word_gen\loan_docs\la_".$upfno."_".$loanid_db.".docx";
$message=file_get_contents($file);
 function rsa_encrypt($key, $message) {
    $rsa = new Crypt_RSA(); 
    $rsa->loadKey($key); 
    $encrypted = base64_encode($rsa->encrypt($message)); 
    return $encrypted;
}
echo $encrypt_file=rsa_encrypt($pubkey, $message);
//from here i want to save encryptted file to encrypt folder like
//$savepath="encrypt\la_".$upfno."_".$loanid_db.".docx";  but i dont know how to do that

//Deryption using phpseclib function is here - but how to use it for above  encryption
 function rsa_decrypt($key, $package) {
    $rsa = new Crypt_RSA(); 
    $rsa->loadKey($key); 
    $decrypted = $rsa->decrypt(base64_decode($package)); 
    return $decrypted;
}

person user3174469    schedule 08.01.2014    source источник
comment
да. file_get_contents(), encrypt($contents), file_putcontents(). В идеале вы должны проверить свои теории и предоставить здесь код и ошибки, если что-то пойдет не так.   -  person Digital Chris    schedule 08.01.2014
comment
я загружу свой код как можно скорее   -  person user3174469    schedule 08.01.2014
comment
вот мой код, пожалуйста, помогите с моим вопросом, спасибо   -  person user3174469    schedule 08.01.2014
comment
Вам действительно было бы лучше сгенерировать во время шифрования случайную строку, используя crypt_random_string(32) phpseclib или что-то еще, а затем зашифровать эту случайную строку с помощью RSA и использовать первые 16 байтов этой случайной строки в качестве ключа для AES и вторые 16 байтов в качестве IV для АЕС. Это было бы на тонну быстрее. Crypt_RSA в phpseclib разделит файл, размер которого больше ключа, на несколько фрагментов соответствующей длины, но в любом случае вам не следует шифровать что-либо длиннее ключа, хотя бы из-за проблемы со скоростью.   -  person neubert    schedule 09.01.2014
comment
@neubet спасибо за помощь. но, к сожалению, я не могу это развивать, потому что я мало что знал о криптографии   -  person user3174469    schedule 09.01.2014
comment
Вы можете увидеть пример того, как это сделать, по адресу phpseclib.sourceforge.net/interop.html. . Нажмите PHP Bindings/seal()/open(), а затем нажмите phpseclib для закрытия и открытия (вы поймете, что я имею в виду, когда перейдете туда). В этом примере используется RC4, и вы тоже можете использовать его.   -  person neubert    schedule 09.01.2014