Я хочу создать систему шифрования сообщений, в которой пользователи отправят сообщение в зашифрованном виде. Я использую GnUPG.I получил помощь от http://www.php.net/manual/en/gnupg.installation.php, чтобы установить GnUPG. После установки на сервере, я создать общественный и частный брелок следуя кодСистема шифрования сообщений GnuPG
$GeneratedKey = $gpg->GenKey($name, $comment, $email, $passphrase,$ExpireDate, $KeyType, $KeyLength,$SubkeyType, $SubkeyLength);
function GenKey($RealName, $Comment, $Email, $Passphrase = '', $ExpireDate = 0, $KeyType = 'DSA', $KeyLength = 1024, $SubkeyType = 'ELG-E', $SubkeyLength = 1024)
{
// validates the keytype
if (($KeyType != 'DSA') && ($KeyType != 'RSA')) {
$this->error = 'Invalid Key-Type, the allowed are DSA and RSA';
return false;
}
// validates the subkey
if ((!empty($SubkeyType)) && ($SubkeyType != 'ELG-E')) {
$this->error = 'Invalid Subkey-Type, the allowed is ELG-E';
return false;
}
// validate the expiration date
if (!preg_match('/^(([0-9]+[dwmy]?)|([0-9]{4}-[0-9]{2}-[0-9]{2}))$/', $ExpireDate)) {
$this->error = 'Invalid Expire Date, the allowed values are <iso-date>|(<number>[d|w|m|y])';
return false;
}
// generates the batch configuration script
$batch_script = "Key-Type: $KeyType\n" .
"Key-Length: $KeyLength\n";
if (($KeyType == 'DSA') && ($SubkeyType == 'ELG-E'))
$batch_script .= "Subkey-Type: $SubkeyType\n" .
"Subkey-Length: $SubkeyLength\n";
$batch_script .= "Name-Real: $RealName\n" .
"Name-Comment: $Comment\n" .
"Name-Email: $Email\n" .
"Expire-Date: $ExpireDate\n" .
"Passphrase: $Passphrase\n" .
"%commit\n" .
"%echo done with success\n";
// initialize the output
$contents = '';
// execute the GPG command
if ($this->_fork_process($this->program_path . ' --homedir ' . $this->home_directory .
' --batch --status-fd 1 --gen-key',
$batch_script, $contents)) {
$matches = false;
if (preg_match('/\[GNUPG:\]\sKEY_CREATED\s(\w+)\s(\w+)/', $contents, $matches))
return $matches[2];
else
return true;
} else
return false;
}
зашифровать следующий кодом
$gpg = new gnupg();
$gpg->addencryptkey($recipient);
$ciphertext = $gpg->encrypt($plaintext);
Расшифровать следующего код
$gpg = new gnupg();
$gpg->adddecryptkey($recipient, $receiver_passphrase);
$plain = $gpg->decrypt($encrypted_text, $plaintext);
этим я успешно создайте папку с именем пользователя и создайте приватный и открытый брандмауэр, а затем отправьте сообщение в зашифрованном виде и расшифруйте приемник. Но моя главная проблема заключается в том, что я не хочу генерировать пользовательскую публичную и закрытую брандмауэр на сервере, вместо этого я хочу генерировать публичную и закрытую бреши в локальном компьютере пользователей.
Возможно ли генерировать открытый и закрытый ключ в локальный компьютер? Потому что я не хочу, чтобы пользователь зависел от безопасности сервера. Только получатель будет в состоянии расшифровать сообщение .. Не другие будут в состоянии расшифровать ..
спасибо,
Теперь у них даже есть якоря, поэтому я мог бы предоставить глубокую ссылку. –
Спасибо! (Я почти соблазн использовать это, если мне когда-либо понадобится перестроить какой-то серверный код, gnupg-python оказался довольно беспорядочным, а нацеливание на Node из ClojureScript не может быть более болезненным). –