Comment crypter des fichiers en utilisant gpg via php

醉折花枝作酒筹
Libérer: 2023-03-11 09:44:02
avant
2646 Les gens l'ont consulté

Cryptage Une tâche simple mais pratique consiste à envoyer des e-mails cryptés. Depuis des années, la norme de cryptage des e-mails est PGP. Mais il s’agit d’un logiciel commercial et ne peut pas être utilisé librement. Comme alternative à PGP, un produit similaire open source est désormais disponible. GPG ne contient pas d'algorithmes brevetés et peut être utilisé pour des applications commerciales sans restrictions.

Comment crypter des fichiers en utilisant gpg via php

Contexte : Le client fournit la clé privée et nous demande de lui transférer le fichier crypté via php.

Environnement

  • macOS Sierra 10.12.1

  • php 7.0.8

Installer l'environnement gpg

macOS:
$ brew install gpg
Copier après la connexion
CentOS
$ yum install gnupg
Copier après la connexion
php

Installez l'extension gnupg, veuillez me contacter pour des méthodes spécifiques Ancien article : utilisez phpize pour installer l'extension php

Importez la clé privée et la clé publique sera importée en conséquence

$ gpg --import /Users/xjnotxj/downloads/6e.pri
Copier après la connexion

Comment crypter des fichiers en utilisant gpg via php

Testez l'exactitude de la clé [peut être ignoré]

Fichiers cryptés
$ gpg --recipient 0D39xxxx --output test_file.xls.gpg --encrypt test_file.xls
Copier après la connexion

0D39xxxx => #1 de l'image

Déchiffrer le fichier
$ gpg -o test_file_new.xls  -d test_file.xls.gpg
Copier après la connexion

Exporter la clé publique

$ gpg -o pubkey.txt -a --export e6e6xxxx
Copier après la connexion

e6e6xxxx =>

// 设置gnupg在你本机的路径
putenv('GNUPGHOME=/root/.gnupg');
try {
    //获取公钥
    $publicKey = file_get_contents('application/report/pubkey.txt');
    //初始化gpg
    $gpg = new gnupg();
    //开启调试
    $gpg->seterrormode(gnupg::ERROR_EXCEPTION);
    //导入公钥
    $info = $gpg->import($publicKey);
    //获取公钥指纹
    $gpg->addencryptkey($info['fingerprint']);
    //获取需要加密的文件
    $uploadFileContent = file_get_contents($filename);
    //加密文件
    $enc = $gpg->encrypt($uploadFileContent);

    //保存文件到本地
    $filename = 'application/report/'.'file_xls' . '.gpg';
    file_put_contents($filename, $enc);

} catch (Exception $e) {
    //log something
    return $e->getMessage();
}
Copier après la connexion
Apprentissage recommandé :

Tutoriel vidéo php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal