У меня проблема, я хочу зашифровать документы 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;
}
crypt_random_string(32)
phpseclib или что-то еще, а затем зашифровать эту случайную строку с помощью RSA и использовать первые 16 байтов этой случайной строки в качестве ключа для AES и вторые 16 байтов в качестве IV для АЕС. Это было бы на тонну быстрее. Crypt_RSA в phpseclib разделит файл, размер которого больше ключа, на несколько фрагментов соответствующей длины, но в любом случае вам не следует шифровать что-либо длиннее ключа, хотя бы из-за проблемы со скоростью. - person neubert   schedule 09.01.2014