Maison  >  Article  >  développement back-end  >  Comment crypter des fichiers en utilisant gpg via php

Comment crypter des fichiers en utilisant gpg via php

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-07-06 15:53:272655parcourir

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
CentOS
$ yum install gnupg
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

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

0D39xxxx => #1 de l'image

Déchiffrer le fichier
$ gpg -o test_file_new.xls  -d test_file.xls.gpg

Exporter la clé publique

$ gpg -o pubkey.txt -a --export e6e6xxxx

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();
}
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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer