>백엔드 개발 >PHP 문제 >PHP를 통해 gpg를 사용하여 파일을 암호화하는 방법

PHP를 통해 gpg를 사용하여 파일을 암호화하는 방법

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-07-06 15:53:272735검색

암호화 간단하면서도 실용적인 작업은 암호화된 이메일을 보내는 것입니다. 수년 동안 이메일 암호화 표준은 PGP였습니다. 하지만 상용 소프트웨어이므로 자유롭게 사용할 수 없습니다. 이제 PGP의 대안으로 유사한 오픈 소스 제품을 사용할 수 있습니다. GPG에는 특허받은 알고리즘이 포함되어 있지 않으며 제한 없이 상업용 애플리케이션에 사용할 수 있습니다.

PHP를 통해 gpg를 사용하여 파일을 암호화하는 방법

배경: 고객이 개인 키를 제공하고 암호화된 파일을 PHP를 통해 고객에게 전송하도록 요구합니다.

환경

  • macOS Sierra 10.12.1

  • php 7.0.8

gpg 환경 설치

macOS:
$ brew install gpg
CentOS
$ yum install gnupg
php

gnupg 확장 설치, 참고해주세요 특정 방법의 경우 이전 기사: phpize를 사용하여 PHP 확장 설치

개인 키를 가져오면 그에 따라 공개 키를 가져옵니다

$ gpg --import /Users/xjnotxj/downloads/6e.pri

PHP를 통해 gpg를 사용하여 파일을 암호화하는 방법

키의 정확성 테스트 [건너뛸 수 있음]

암호화된 파일
$ gpg --recipient 0D39xxxx --output test_file.xls.gpg --encrypt test_file.xls

0D39xxxx => 사진의 #1

파일 암호 해독
$ gpg -o test_file_new.xls  -d test_file.xls.gpg

공개 키 내보내기

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

e6e6xxxx => 위 사진의 #2

php를 사용하여 파일 암호화

// 设置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();
}

추천 학습: php 비디오 튜토리얼

위 내용은 PHP를 통해 gpg를 사용하여 파일을 암호화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제