Отправить зашифрованный файл (zip или txt) – через PHP – можно открыть на ПК с Windows

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

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

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

Вы можете использовать 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.    " 

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

—– BEGIN MySecret —– TVn8APjdMOdLPUBQ2OWsEh7wWnihhKKOKf11Vj0oo4pM20BPwrRXJyL + nBOL dpxdc + PQQoQlr0Vz1n1Fv932HQ16DG712ui69T3O0jI3NfX8jRjtZkal / SFY Vu9JJEWPfZ2Ri1fkfOCqe9ZvFEmJ78BcUVmf37SYbgKi8UcAv4i1heHfJ05e nde6nFeiyDptYflT7SiIGHcO1cVya22b1OLHakAE2paS1OJqQrHYc + 5wEAdo DU / 0BmNvNNYOekmHZT19C1 + cIwZFo3ACLRN44gZffx + KIng570UcoNYa7NWn hzt6gvQHXEp2jnE = —– —– END MySecret

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

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

Я использую 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.

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

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

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

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