php 의 RSA 암호 화 복호화 알고리즘 원리 와 용법 분석
5628 단어 phpRSA암호 화 복호화 알고리즘
최근 에 업무 의 수요 로 인해 알 리 페 이 결제 와 관련 된 지식 을 되 돌려 야 한다.알 리 페 이 는 RSA 암호 화 체 제 를 응 용 했 기 때문에 개인 이 이에 대해 잘 모 르 기 때문에 여기 서 다음 정 리 를 써 야 한다.
1.공개 키 와 비밀 키 생 성
RSA 알고리즘 을 사용 하려 면 공개 키 와 비밀 키 가 되 어야 합 니 다.공개 키 와 비밀 키 의 생 성 은 openssl 도 구 를 사용 할 수 있 습 니 다.
이번 테스트 는 windows 에서 진행 되 었 으 며,아래 주소 로 windows 설치 패 키 지 를 다운로드 할 수 있 습 니 다.
설치 후 설치 디 렉 터 리 의 빈 디 렉 터 리 에 들 어가 다음 명령 을 수행 합 니 다.
openssl.exe // OpenSSL
genrsa -out rsa_private_key.pem 1024 // , rsa_private_key.pem
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt // java, PKCS8
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem // , rsa_public_key.pem
공개 키 rsapublic_key.pem 의 내용:-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDc5nSC6mHl9bmM6L8n7Sq1+Ft6
VF8LcU3jst8RIy7WqXXd5XZomc0cJLxVz3Vc0vgUKKJyP6q2ozDOCFgCp7Q9InFg
ngtNVLEJ1+Nm0+snUDbYbnrfW8wwSPG0jPQ73CgMxOdv+IGhir6mEITbdEh+ZsVc
GRd0OvKYIg+Itgk3/QIDAQAB
-----END PUBLIC KEY-----
비밀 키 rsaprivate_key.pem 의 내용:
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDD4KA0yU7EG7ZA32OAVDHlwXf9LYywXGn7Ma9LffnFL57cpYoQ
Wf0Oz8FE9/UnjFOeHs2XjDrhe+uqVtYX/9Vi/znJgP9D7hpTo2NJHM/AUykD+itl
cie2Tu+sjJQi0JFVcpc3D0ooTBhng35406CucRaOn/a52mxQnGtA4AmsSwIDAQAB
AoGAG25nwTy39SrUWT1vl9cyrbRsc15fp4sppG4O2Imp4v2KR+g+749KqzpZHKmF
AabbRveVXzXaQR2zoUVL8kx3u4hqY4M/S1AcOxNPIJKB703XxA1yf2Ta2CvLsWTm
tsDWRW1WudF18yOZf3q7aoyMhpBUMlmhH4mvIYWOPFj0zaECQQD4A11Q8sfpOcIK
fMz5jJymLMZ9P8gxNbafwjxTdTXht/MUprEAePslP3AeyKBMJNYGs04/lOQzksp+
ZG6j7/XzAkEAyi9zj8EaPlleAil8mB5wDWiibQ/Z92nMLSUmH5FoO013dvumBI8c
CcP1/go2sj3H4RQEWycr360yTubNkkHOSQJAcRRPos3fOkZ8Y329k3Z6IgY+RfMj
2tQLvVG5YbAKbi0J5vuNrpJ6p+QBwfdlpvIQp6NvZOwFFEK0kuZFz/dj4wJBALyc
cZCMUoARfEpGC24ZDuzjTIqzO+G7d3Yx7pOKYRLZXHXJogEkw8I0ZXmca5PxYFIP
C1VBgINEHedPFjy3WMkCQEh3FG0xDpUFXETct5L1whT8lsN0EK3ZmcfDePcbKuHW
iE5pbNn7ytpVT+jiT3+FVEZVSZCiW0lDnyd86Ppos5g=
-----END RSA PRIVATE KEY-----
공개 키 와 비밀 키 가 생 성 된 후에 비밀 키 는 스스로 저장 하고 공개 키 를 제3자 에 게 맡 기 면 됩 니 다.
2.phop 의 RSA 암호 화 복호화
암호 화 복호화 하기 전에 먼저 phop 이 openssl 확장 을 열 었 는 지 확인 하고 phopinfo()함 수 를 통 해 볼 수 있 습 니 다.
일반적인 상황 에서 다음 과 같은 두 가지 상황 이 있다.
① 공개 키 암호 화 를 통 해 비밀 키 를 통 해 복호화 한다.
② 비밀 키 를 통 해 암호 화하 고 공개 키 를 통 해 복호화 한다.
알 리 페 이의 업무 장면 은 두 번 째 상황 에 속한다.
4.567917.업무 측 알 리 페 이 가 지불 요 구 를 보 내 고 sign 매개 변 수 를 자신의 비밀 키 를 통 해 암호 화 한 후에 알 리 페 이의 인터페이스 에 보 냅 니 다
암호 화:
$data = " ";
echo sign($data, 'rsa_private_key.pem');
/* */
function sign($data, $rsaPrivateKey) {
/* PEM ,$rsaPrivateKey PEM */
$priKey = file_get_contents($rsaPrivateKey);
/* PEM */
$res = openssl_get_privatekey($priKey);
/* */
//openssl_sign($data, $sign, $res);
openssl_private_encrypt($data, $sign, $res);
/* */
openssl_free_key($res);
/* Base64 , */
$sign = base64_encode($sign);
return $sign;
}
실행 후 다음 문자열 을 가 져 옵 니 다:geNTbwabOYT1l2TIkaxgxnCZDop8pynyNtMNbYATtmyyOlxgJhm363ufeHbNboIhc3Pzi7kVrWPPkFsNUiGnS4mATzAcf0woJVC+26g5j19yQqb00Fr+XVipEVyN0sn9/uhlot6m6qj7h5adaREvsY/30jTld6kDkkQF8k3Eg+Y=
복호화:
$data = "geNTbwabOYT1l2TIkaxgxnCZDop8pynyNtMNbYATtmyyOlxgJhm363ufeHbNboIhc3Pzi7kVrWPPkFsNUiGnS4mATzAcf0woJVC+26g5j19yQqb00Fr+XVipEVyN0sn9/uhlot6m6qj7h5adaREvsY/30jTld6kDkkQF8k3Eg+Y=";
echo decrypt($data, 'rsa_public_key.pem');
function decrypt($data, $rsaPublicKey) {
/* PEM ,$rsaPublicKey PEM */
$pubKey = file_get_contents($rsaPublicKey);
/* PEM */
$res = openssl_get_publickey($pubKey);
/* */
openssl_public_decrypt(base64_decode($data), $decrypted, $res);
/* */
openssl_free_key($res);
return $decrypted;
}
첫 번 째 상황 은 두 번 째 상황 과 유사 하 므 로 여기 서 군말 하지 않 는 다.주의:알 리 페 이 가 사용 하 는 암호 화 함 수 는 openssl 입 니 다.sign,이후 검증 은 openssl 을 사용 할 수 있 습 니 다.verify 함수 검증.
PS:암호 화 복호화 에 관심 이 있 는 친 구 는 본 사이트 의 온라인 도 구 를 참고 할 수 있 습 니 다.
온라인 RSA 암호 화/복호화 도구:
http://gnuwin32.sourceforge.net/packages/openssl.htm
텍스트 온라인 암호 화 복호화 도구(AES,DES,RC4 등 포함):
http://tools.jb51.net/password/rsa_encode
온라인 해시/해시 알고리즘 암호 화 도구:
http://tools.jb51.net/password/txt_encode
온라인 MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 암호 화 도구:
http://tools.jb51.net/password/hash_encrypt
온라인 sha 1/sha 224/sha 256/sha 384/sha 512 암호 화 도구:
http://tools.jb51.net/password/hash_md5_sha
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.