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

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

醉折花枝作酒筹
풀어 주다: 2023-03-11 09:44:02
앞으로
2715명이 탐색했습니다.

암호화 간단하면서도 실용적인 작업은 암호화된 이메일을 보내는 것입니다. 수년 동안 이메일 암호화 표준은 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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿