PHP의 암호화 방식은 다음과 같습니다
1. MD5 암호화
문자열 md5( 문자열 $str [, bool $raw_output = false ] )
매개변수
str -- 원래 문자열입니다.
raw_output - 선택 사항인 raw_output이 TRUE로 설정된 경우 MD5 메시지 다이제스트는 길이가 16바이트인 원시 바이너리 형식으로 반환됩니다.
이것은 되돌릴 수 없는 암호화이므로 다음 코드를 실행하세요
$password = '123456';
echo md5($password);
결과는 e10adc3949ba59abbe56e057f20f883e입니다
2. 암호화폐 암호화
문자열 암호( 문자열 $str [, 문자열 $salt ] )
crypt() 표준 UNIX DES 알고리즘이나 시스템에서 사용할 수 있는 다른 대체 알고리즘을 기반으로 해시된 문자열을 반환합니다.
매개변수
str - 해시할 문자열입니다.
salt - 선택적 소금 값 문자열입니다. 제공되지 않으면 알고리즘 동작은 다양한 알고리즘 구현에 따라 결정되며 예측할 수 없는 결말로 이어질 수 있습니다.
이것도 되돌릴 수 없는 암호화이므로 다음 코드를 실행하세요
결과는 teMGKvBPcptKo
자동 솔트 값을 사용하는 예는 다음과 같습니다.
실행 결과는 비밀번호 확인이 출력됩니다!
다양한 해시 유형으로 crypt()를 사용하는 예는 다음과 같습니다.
결과는 다음과 같습니다
표준 DES: rl.3StKT.4T8M
확장 DES: _J9..rasmBYk8r9AiWNc
MD5:
복어: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi
SHA-256: $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6
SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
crypt() 함수가 다중 해싱을 지원하는 시스템에서는 해당 유형의 사용 가능 여부에 따라 다음 상수가 0 또는 1로 설정됩니다.
CRYPT_EXT_DES - DES 알고리즘을 기반으로 하는 확장된 해싱입니다. 솔트는 밑줄과 4바이트 주기 수, 4바이트 솔트로 구성된 9자 문자열입니다. 이는 최하위 비트가 먼저 오도록 인쇄 가능한 문자(각각 6비트)로 인코딩됩니다. 0~63은 "./0-9A-Za-z"로 인코딩됩니다. 솔트에 잘못된 문자를 사용하면 crypt()가 실패하게 됩니다.
CRYPT_MD5 - MD5 해싱은 $1$로 시작하는 12자 문자열 솔트를 사용합니다.
CRYPT_BLOWFISH - Blowfish 알고리즘은 "$2a$", 두 자리 비용 매개변수 "$" 및 "./0-9A-Za-z"의 문자로 구성된 64비트 문자열을 사용합니다. 솔트에서 이 범위 밖의 문자를 사용하면 crypt()가 빈 문자열을 반환하게 됩니다. 두 자리 비용 매개변수는 루프 수의 밑이 2인 로그입니다. 이 범위를 초과하면 crypt()가 실패합니다.
CRYPT_SHA256 - SHA-256 알고리즘은 해싱을 위해 $5$로 시작하는 16자 문자열 솔트를 사용합니다. 솔트 문자열이 "rounds=
CRYPT_SHA512 - SHA-512 알고리즘은 $6$로 시작하는 16자 문자열 솔트를 사용하여 해시합니다. 솔트 문자열이 "rounds=
3. Sha1 암호화
매개변수
str -- 문자열을 입력합니다.
raw_output -- 선택적 raw_output 매개변수가 TRUE로 설정된 경우 sha1 다이제스트는 길이가 20자인 원시 형식으로 반환됩니다. 그렇지 않으면 반환 값은 40자의 16진수입니다.
이 역시 되돌릴 수 없는 암호화이므로 다음 코드를 실행하세요.
$password = '123456';
echo sha1($password);
얻은 결과는 7c4a8d09ca3762af61e59520943dc26494f8941b
암호화를 추가해도 소용없다고 생각하시나요? 실제로는 암호화가 복잡하면 해독될 가능성이 더 적습니다. 위의 세 가지 암호화 방법을 모두에게 권장합니다. PHP 암호화 라이브러리.
4. URL 암호화
문자열 urlencode( 문자열 $str )이 기능을 사용하면 문자열을 인코딩하여 URL의 요청 부분에 사용할 수 있고 다음 페이지로 변수를 전달할 수도 있습니다.
-_를 제외한 모든 영숫자가 아닌 문자가 퍼센트 기호(%) 뒤에 두 개의 16진수 숫자로 바뀌고 공백이 더하기 기호( )로 인코딩되는 문자열을 반환합니다. 이 인코딩은 WWW 형식 POST 데이터의 인코딩과 동일하며 application/x-www-form-urlencoded 미디어 유형과 동일한 인코딩입니다. 역사적인 이유로 이 인코딩은 공백을 더하기 기호( )로 인코딩하는 RFC1738 인코딩과 다릅니다.
문자열 urldecode( 문자열 $str )
주어진 인코딩된 문자열에서 %##을 디코딩합니다. 더하기 기호(' ')는 공백 문자로 디코딩됩니다.
이것은 가역적 암호화입니다. 암호화에는 urlencode 메소드가 사용되고 복호화에는 urldecode 메소드가 사용됩니다.
$url = 'http://www.xxx.com/CraryPrimitiveMan/';
$encodeUrl = urlencode($url);
echo $encodeUrl . "n"; // 웹페이지에 표시되면
다음으로 수정하세요
echo urldecode($encodeUrl);
얻은 결과는 다음과 같습니다
http://www.xxx.com/CraryPrimitiveMan/
RFC 3986을 기반으로 URL을 암호화하는 방법은 다음과 같습니다.
5. Base64 정보 인코딩 및 암호화
문자열 base64_encode( 문자열 $data )
base64를 사용하여 데이터를 인코딩합니다.
이 인코딩은 이메일 본문과 같은 순수하지 않은 8비트 전송 계층을 통해 바이너리 데이터를 전송할 수 있도록 설계되었습니다.
Base64로 인코딩된 데이터는 원본 데이터보다 약 33% 더 많은 공간을 차지합니다.
string base64_decode ( string $data [, bool $strict = false ] )
base64로 인코딩된 데이터를 디코딩합니다.
매개변수
데이터 - 인코딩된 데이터입니다.
strict - 입력 데이터가 base64 알파벳을 초과하면 FALSE를 반환합니다.
다음 코드를 실행하세요:
결과는 다음과 같습니다
phpass 추천
사용자 비밀번호를 데이터베이스에 저장하기 전에 해시하여 보호하는 표준 방법인 phpass 0.3으로 테스트되었습니다. md5 및 sha1과 같이 일반적으로 사용되는 많은 해싱 알고리즘은 해커가 해당 알고리즘을 사용하여 쉽게 비밀번호를 해독할 수 있기 때문에 비밀번호 저장에 안전하지 않습니다.
비밀번호를 해시하는 가장 안전한 방법은 bcrypt 알고리즘을 사용하는 것입니다. 오픈 소스 phpass 라이브러리는 사용하기 쉬운 클래스에서 이 기능을 제공합니다.
위 내용은 PHP 암호화 방법에 대한 기사의 소개입니다.