백엔드 개발 PHP 튜토리얼 使用openssl实现rsa非对称加密算法示例_php实例

使用openssl实现rsa非对称加密算法示例_php实例

Jun 07, 2016 pm 05:22 PM
openssl rsa 비대칭 암호화 알고리즘

复制代码 代码如下:

/**
 * 使用openssl实现非对称加密
 * @since 2010-07-08
 */
class Rsa
{
    /**
     * private key
     */
        private $_privKey;

        /**
         * public key
         */
        private $_pubKey;

        /**
         * the keys saving path
         */
        private $_keyPath;

        /**
         * the construtor,the param $path is the keys saving path
         */
        public function __construct($path)
        {
                if(empty($path) || !is_dir($path)){
                        throw new Exception('Must set the keys save path');
                }

                $this->_keyPath = $path;
        }

        /**
         * create the key pair,save the key to $this->_keyPath
         */
        public function createKey()
        {
                $r = openssl_pkey_new();
                openssl_pkey_export($r, $privKey);
                file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR . 'priv.key', $privKey);
                $this->_privKey = openssl_pkey_get_public($privKey);

                $rp = openssl_pkey_get_details($r);
                $pubKey = $rp['key'];
                file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR .  'pub.key', $pubKey);
                $this->_pubKey = openssl_pkey_get_public($pubKey);
        }

        /**
         * setup the private key
         */
        public function setupPrivKey()
        {
                if(is_resource($this->_privKey)){
                        return true;
                }
                $file = $this->_keyPath . DIRECTORY_SEPARATOR . 'priv.key';
                $prk = file_get_contents($file);
                $this->_privKey = openssl_pkey_get_private($prk);
                return true;
        }

        /**
         * setup the public key
         */
        public function setupPubKey()
        {
                if(is_resource($this->_pubKey)){
                        return true;
                }
                $file = $this->_keyPath . DIRECTORY_SEPARATOR .  'pub.key';
                $puk = file_get_contents($file);
                $this->_pubKey = openssl_pkey_get_public($puk);
                return true;
        }

        /**
         * encrypt with the private key
         */
        public function privEncrypt($data)
        {
                if(!is_string($data)){
                        return null;
                }

                $this->setupPrivKey();

                $r = openssl_private_encrypt($data, $encrypted, $this->_privKey);
                if($r){
                        return base64_encode($encrypted);
                }
                return null;
        }

        /**
         * decrypt with the private key
         */
        public function privDecrypt($encrypted)
        {
                if(!is_string($encrypted)){
                        return null;
                }

                $this->setupPrivKey();

                $encrypted = base64_decode($encrypted);

                $r = openssl_private_decrypt($encrypted, $decrypted, $this->_privKey);
                if($r){
                        return $decrypted;
                }
                return null;
        }

        /**
         * encrypt with public key
         */
        public function pubEncrypt($data)
        {
                if(!is_string($data)){
                        return null;
                }

                $this->setupPubKey();

                $r = openssl_public_encrypt($data, $encrypted, $this->_pubKey);
                if($r){
                        return base64_encode($encrypted);
                }
                return null;
        }

        /**
         * decrypt with the public key
         */
        public function pubDecrypt($crypted)
        {
                if(!is_string($crypted)){
                        return null;
                }

                $this->setupPubKey();

                $crypted = base64_decode($crypted);

                $r = openssl_public_decrypt($crypted, $decrypted, $this->_pubKey);
                if($r){
                        return $decrypted;
                }
                return null;
        }

        public function __destruct()
        {
                @ fclose($this->_privKey);
                @ fclose($this->_pubKey);
        }

}

//以下是一个简单的测试demo,如果不需要请删除
$rsa = new Rsa('ssl-key');

//私钥加密,公钥解密
echo 'source:我是老鳖
';
$pre = $rsa->privEncrypt('我是老鳖');
echo 'private encrypted:
' . $pre . '
';

$pud = $rsa->pubDecrypt($pre);
echo 'public decrypted:' . $pud . '
';

//公钥加密,私钥解密
echo 'source:干IT的
';
$pue = $rsa->pubEncrypt('干IT的');
echo 'public encrypt:
' . $pue . '
';

$prd = $rsa->privDecrypt($pue);
echo 'private decrypt:' . $prd;
?>


需要注意的是apache要支持OpenSSL
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Nginx가 보다 안전한 통신을 위해 OpenSSL 라이브러리를 사용하는 방법 Nginx가 보다 안전한 통신을 위해 OpenSSL 라이브러리를 사용하는 방법 Jun 10, 2023 pm 01:51 PM

Nginx는 웹 서버, 로드 밸런서, 역방향 프록시 및 캐시에 널리 사용되는 소프트웨어입니다. 네트워크 전송 중 데이터 암호화 및 보안에 대한 관심이 높아지고 있습니다. 통신 보안을 향상시키기 위해 OpenSSL 라이브러리를 사용하여 SSL/TLS 프로토콜을 구현하여 민감한 데이터의 전송을 보호할 수 있습니다. 이 기사에서는 Nginx와 OpenSSL 라이브러리를 사용하여 보다 안전한 통신을 달성하는 방법을 설명합니다. OpenSSL 라이브러리 설치 및 구성 먼저 서버에 OpenSSL 라이브러리를 설치해야 합니다. 만들 수 있다

Python을 사용하여 RSA 암호화 및 암호 해독 구현 Python을 사용하여 RSA 암호화 및 암호 해독 구현 Apr 14, 2023 pm 02:13 PM

어제 Python을 사용하여 RSA 알고리즘을 구현하는 방법을 보여주는 영어 기사 [1]을 봤습니다. RSA에 익숙하지 않은 친구는 이해라는 기사를 읽을 수 있습니다. RSA란 무엇인가에 대한 RSA 알고리즘과 RSA의 수학적 원리를 설명하고, 간단한 예도 제시하고 있다. 이 글은 Quanzhihu에서 RSA를 이해하기 가장 쉬운 글이라고 할 수 있다(독자 의견에서 따온 것이다). 영어로 제공된 코드를 실행해보니 중국어를 암호화할 수 없는 것을 발견하여 중국어 암호화 및 복호화를 지원하도록 암호화 및 복호화 기능을 수정했습니다. 오늘 기사에서는 Python을 사용하여 RSA 암호화 및 암호 해독 프로세스를 구현하는 방법을 공유합니다.

PHP 및 GMP를 사용하여 큰 정수에 대해 RSA 암호화 및 암호 해독 알고리즘을 수행하는 방법 PHP 및 GMP를 사용하여 큰 정수에 대해 RSA 암호화 및 암호 해독 알고리즘을 수행하는 방법 Jul 28, 2023 pm 05:25 PM

PHP 및 GMP를 사용하여 큰 정수에 대해 RSA 암호화 및 암호 해독 알고리즘을 수행하는 방법 RSA 암호화 알고리즘은 데이터 보안 분야에서 널리 사용되는 비대칭 암호화 알고리즘입니다. 특히 큰 두 개의 소수와 몇 가지 간단한 수학적 연산을 기반으로 공개 키 암호화 및 개인 키 암호 해독 프로세스를 구현합니다. PHP 언어에서는 GMP(GNUMultiplePrecision) 라이브러리를 통해 큰 정수 계산을 구현하고, RSA 알고리즘을 결합해 암복호화 기능을 구현한다. 이 기사에서는 PHP 및 GMP 라이브러리를 사용하여 다음을 수행하는 방법을 소개합니다.

OpenSSL을 사용하여 MySQL SSL 인증서를 생성하는 방법 OpenSSL을 사용하여 MySQL SSL 인증서를 생성하는 방법 Sep 09, 2023 pm 02:12 PM

OpenSSL을 사용하여 MySQL SSL 인증서를 생성하는 방법 소개: MySQL은 널리 사용되는 관계형 데이터베이스 시스템으로 실제 프로덕션 환경에서 암호화된 통신을 위해 SSL(SecureSocketsLayer) 프로토콜을 사용하는 것이 매우 중요합니다. 이 기사에서는 OpenSSL 도구를 사용하여 MySQL SSL 인증서를 생성하는 방법을 소개하고 해당 코드 예제를 제공합니다. 단계: OpenSSL 설치: 먼저 컴퓨터에 OpenSSL이 설치되어 있는지 확인하세요.

CentOS 7 및 CentOS 7에서 OpenBLAS 설치 OpenSSL 설치 CentOS 7 및 CentOS 7에서 OpenBLAS 설치 OpenSSL 설치 Feb 10, 2024 am 11:45 AM

오픈소스 운영체제인 LINUX는 다양한 애플리케이션과 사용자 그룹을 보유하고 있습니다. CentOS7은 RHEL(Red Hat Enterprise Linux) 소스 코드를 기반으로 구축되었으며 높은 수준의 안정성과 보안성을 갖추고 있습니다. OpenBLAS 및 OpenSSL은 많은 개발자와 시스템 관리자의 일반적인 요구 사항입니다. 이 문서에서는 CentOS7에서 OpenBLAS 및 OpenSSL을 설치하고 구성하는 방법을 자세히 설명합니다. OpenBLAS는 BLAS(BasicLinearAlgebraSubprograms) 인터페이스를 기반으로 하는 오픈 소스 고성능 수학 라이브러리입니다.

PHP 및 GMP를 사용하여 RSA 암호화 및 암호 해독 알고리즘을 구현하는 방법 PHP 및 GMP를 사용하여 RSA 암호화 및 암호 해독 알고리즘을 구현하는 방법 Jul 28, 2023 pm 11:54 PM

PHP와 GMP를 사용하여 RSA 암호화 및 복호화 알고리즘을 구현하는 방법 RSA 암호화 알고리즘은 정보 보안 분야에서 널리 사용되는 비대칭 암호화 알고리즘입니다. 실제 응용에서는 RSA 암호화 및 복호화 알고리즘을 구현하기 위해 프로그래밍 언어를 사용해야 하는 경우가 많습니다. PHP는 일반적으로 사용되는 서버측 스크립팅 언어이고, GMP(GNUMultiplePrecision)는 RSA 알고리즘에 필요한 많은 연산을 수행하는 데 도움을 줄 수 있는 고정밀 수학 계산 라이브러리입니다. 이 기사에서는 PHP와 GMP를 사용하는 방법을 소개합니다.

PHP는 RSA 비대칭 암호화 기술을 구현합니다. PHP는 RSA 비대칭 암호화 기술을 구현합니다. Jun 18, 2023 am 09:34 AM

RSA 비대칭 암호화 기술은 현재 가장 널리 사용되고 안전한 암호화 방법 중 하나입니다. 널리 사용되는 프로그래밍 언어인 PHP는 RSA 암호화 구현에 있어서도 고유한 이점을 가지고 있습니다. 이 기사에서는 독자들에게 PHP를 사용하여 RSA 비대칭 암호화 기술을 구현하는 방법을 소개합니다. 1. RSA 알고리즘이란 무엇입니까? RSA 알고리즘은 일반적으로 데이터 암호화 및 디지털 서명에 사용됩니다. 보안은 주로 정수론 문제, 즉 매우 짧은 시간에 매우 큰 정수를 인수분해하는 어려움에 기반합니다. RSA 알고리즘 암호화 스트림

Python을 사용하여 RSA 암호화 알고리즘을 작성하는 방법은 무엇입니까? Python을 사용하여 RSA 암호화 알고리즘을 작성하는 방법은 무엇입니까? Sep 20, 2023 pm 01:21 PM

Python을 사용하여 RSA 암호화 알고리즘을 작성하는 방법은 무엇입니까? 소개: RSA는 정보 보안 분야에서 널리 사용되는 비대칭 암호화 알고리즘입니다. 현대 통신에서는 RSA 암호화 알고리즘이 일반적으로 민감한 데이터를 암호화하고 해독하는 데 사용됩니다. 이 기사에서는 Python을 사용하여 RSA 암호화 알고리즘을 작성하는 방법을 소개하고 특정 코드 예제를 제공합니다. Python 라이브러리 설치 RSA 암호화 알고리즘 작성을 시작하기 전에 Python 암호화 라이브러리를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다: pipinstallrsa generate

See all articles