Отправить зашифрованный файл (zip или txt) - через PHP - можно открыть на ПК с Windows - PullRequest
1 голос
/ 21 октября 2011

Мне нужно отправить минимальное количество данных по электронной почте пользователям (но они должны быть зашифрованы).

Им потребуется DL-приложение и расшифровать его с помощью какого-то простого в использовании программного обеспечения (ПК / MAC) ... есть идеи?

Моя первая мысль - сделать зашифрованноеZIP-файл, который они могут открыть с помощью 7zip или winzip ... но я обнаружил, что это не может произойти с типичным приложением PHP / Linux.

Ответы [ 4 ]

1 голос
/ 21 октября 2011

Вы можете использовать mcrypt и Blowfish для шифрования сообщения.Вы можете найти много программ шифрования / дешифрования для Blowfish, например ... http://www.di -mgt.com.au / mysecret.html

<?php

    $key = 'too many secrets?';
    $text = 'If you are paranoid, we know who you are and what you want. Stay online so we can trace you.';

    $crypt_text = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $text, MCRYPT_MODE_ECB);

    var_dump($crypt_text);

    $plain_text = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $crypt_text, MCRYPT_MODE_ECB);

    var_dump($plain_text);

?>

Тест:

string(96) "dà¨gþJ\V$3Äö,'  [y€&”¼‚\•òÏ=$ÅdG|ÀœÀbáÌɽûÝÉ·'þØ?I½}8óTé5<-‹ôÞ¶Ÿ°ÅMcCê®JxØ@RIú£Ç‹™xÞ"
string(96) "If you are paranoid, we know who you are and what you want. Stay online so we can trace you.����"

Программа, которую я связал, нуждается во входном файле, подобном этому (вы можете легко сделать это так в электронной почте).

----- НАЧАТЬ MYSECRET ----- TVn8APjdMOdLPUBQ2OWsEh7wWnihhKKOKf11Vj0oo4pM20BPwrRXJyB +dpxdc + PQQoQlr0Vz1n1Fv932HQ16DG712ui69T3O0jI3NfX8jRjtZkal / SFY Vu9JJEWPfZ2Ri1fkfOCqe9ZvFEmJ78BcUVmf37SYbgKi8UcAv4i1heHfJ05e nde6nFeiyDptYflT7SiIGHcO1cVya22b1OLHakAE2paS1OJqQrHYc + 5wEAdo DU / 0BmNvNNYOekmHZT19C1 + cIwZFo3ACLRN44gZffx + KIng570UcoNYa7NWn hzt6gvQHXEp2jnE = ----- ----- END MySecret

0 голосов
/ 21 октября 2011

Я использую GNUPG: http://www.gnupg.org/

Вам понадобится доступ к вашему веб-серверу, чтобы установить его или, если он установлен, добавить свой брелок.

Тогда вы можете использоватьэто с помощью вызова exec или расширения GNUPG PECL.

Проблема в том, что пользователь должен создать ключ, используя тот же адрес электронной почты ($ gpgrecipient), который вы используете для его шифрования, и ониДОЛЖНО делать это, ДО того, как вы зашифруете его и загрузите на сервер открытого ключа (что будет делать программное обеспечение).Однако программное обеспечение довольно простое и кроссплатформенное.

Для моего сценария шифрования php я использую:

<?php
//error_reporting(E_ALL);
echo 'GNUPG Test<br /><br />';

putenv("GNUPGHOME=/home/me/.gnupg");

$gpg = '/usr/bin/gpg';
$gpgrecipient = 'ben@mydomain.com';
$plaintext = 'This should be encrypted!!!!';



$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin 
   1 => array("pipe", "w"),  // stdout 
   2 => array("file", "/usr/home/me/error-output.txt", "a") // stderr is a file to write to
);

$cwd = '/usr/bin/';
$env = array('GNUPGHOME' => '/usr/home/me/.gnupg');


$process = proc_open("gpg --no-auto-check-trustdb -q --auto-key-locate keyserver --no-secmem-warning --lock-never -e -a -r {$gpgrecipient}", 
                        $descriptorspec, $pipes, $cwd, $env);

if (is_resource($process)) {
    // $pipes now looks like this:
    // 0 => writeable handle connected to child stdin
    // 1 => readable handle connected to child stdout

    fwrite($pipes[0], $plaintext);
    fclose($pipes[0]);

    $encrypted = stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    // It is important that you close any pipes before calling
    // proc_close in order to avoid a deadlock
    $return_value = proc_close($process);

 //   echo "\n\n command returned $return_value\n";

    $message = "

This is what we should have ideally (Encrypted Emails). 
Unencrypted text - name, date of arrival, etc. 
This part only Is encrypted and requires a password to view:

{$encrypted} 

More Unencrypted text at the end";


mail($mailrecp, 'Encrypted Emails Example', $message);

}


?>

Это только зашифровывает раздел электронной почты, который я получаю с помощьюthunderbird и enigmail.

Вы можете изменить его, чтобы ввести файл и прикрепить его к электронному письму.

Возможно, вы даже найдете приложение barebones gnupg, которое создает ключ и загружает его вобщедоступный сервер, расшифровывает файл и т. д. и т. д.

Если данные действительно конфиденциальны, я думаю, что GnuPG - хороший вариант.

Гораздо лучше, например, обрабатывать онлайн-бронирования.что нужно всего лишь перейти к одному электронному письму, которым вы управляете, чем к тому, что вам нужно, но я подумал, что отправлю это туда.

0 голосов
/ 21 октября 2011

Что не может случиться с типичным приложением PHP? Вы можете, конечно, почтовые файлы: http://php.net/manual/en/book.zip.php

0 голосов
/ 21 октября 2011

Не является решением для вас хранить архивы на сервере и отправлять по электронной почте ссылку на страницу php, которая может получить определенный zip-файл и отправить его пользователю после входа в систему с базовой аутентификацией. Таким образом, только пользователи, которые знают пароль, могут выполнить этот скрипт и загрузить файл. Что ты думаешь?

...