PHP 암호 화 를 위 한 몇 가지 방법 소개
1.MD5 암호 화
string md5 ( string $str [, bool $raw_output = false ] )
매개 변수
str -- 원본 문자열.
raw_output -- 선택 가능 한 rawoutput 가 TRUE 로 설정 되면 MD5 메시지 요약 은 16 바이트 길이 의 원본 바 이 너 리 형식 으로 되 돌아 갑 니 다.
이것 은 역 암호 화 되 지 않 고 다음 과 같은 코드 를 실행 합 니 다.
$password = '123456';
echo md5($password);
결 과 를 얻 은 것 은 e10adc 3949 ba59abbe56e 057 f20f883e 이다.
2.Crype 암호 화
string crypt ( string $str [, string $salt ] )
crypt()는 표준 UNIX DES 알고리즘 이나 시스템 에서 사용 할 수 있 는 다른 대체 알고리즘 을 기반 으로 한 해시 문자열 을 되 돌려 줍 니 다.
매개 변수
str -- 흩 어 질 문자열 입 니 다.
salt -- 선택 한 소금 값 문자열 입 니 다.제공 되 지 않 으 면 알고리즘 행 위 는 서로 다른 알고리즘 에 의 해 결정 되 고 예측 할 수 없 는 끝 을 초래 할 수 있 습 니 다.
이것 도 역 암호 화 할 수 없 는 코드 로 다음 과 같은 코드 를 실행 합 니 다.
$password = '123456';
$salt = "test";//
echo crypt($password, $salt);
얻 은 결 과 는 teMGKvBPcptKo 입 니 다.자동 소금 값 을 사용 하 는 예 는 다음 과 같다.
$password = crypt('mypassword'); //
/* crypt() , 。( , DES 2 , MD5 12 。)*/
if (crypt('mypassword', $password) == $password) {
echo "Password verified!";
}
실행 결 과 는 출력 Password verified!다른 해시 형식 으로 crypt()를 사용 하 는 예 는 다음 과 같 습 니 다.
if (CRYPT_STD_DES == 1) {
echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "
";
}
if (CRYPT_EXT_DES == 1) {
echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "
";
}
if (CRYPT_MD5 == 1) {
echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "
";
}
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "
";
}
if (CRYPT_SHA256 == 1) {
echo 'SHA-256: ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "
";
}
if (CRYPT_SHA512 == 1) {
echo 'SHA-512: ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "
";
}
그 결 과 는 다음 과 같다.Standard DES: rl.3StKT.4T8M
Extended DES: _J9..rasmBYk8r9AiWNc
MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0
Blowfish: $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_STD_DES-표준 DES 알고리즘 을 기반 으로 한 해시 에는'.../0-9A-Za-z'문자 중 두 문 자 를 소금 값 으로 사용 합 니 다.소금 값 에 불법 문 자 를 사용 하면 crypt()가 실 패 했 습 니 다.
CRYPT_EXT_DES-DES 알고리즘 을 기반 으로 확 장 된 해시 입 니 다.소금 값 이 9 글자 인 문자열 은 밑줄 1 개 뒤에 4 바이트 순환 횟수 와 4 바이트 소금 값 으로 구성 되 어 있다.그것들 은 인쇄 가능 한 문자 로 인 코딩 되 어 있 으 며,각각 6 자리 씩 유효 비트 가 가장 적 습 니 다.0 에서 63 은'.../0-9A-Za-z'로 인 코딩 되 었 다.소금 값 에 불법 문 자 를 사용 하면 crypt()가 실 패 했 습 니 다.
CRYPT_MD5-MD5 해시 에는$1$로 시작 하 는 12 글자 의 문자열 소금 값 을 사용 합 니 다.
CRYPT_BLOWFISH-Blowfish 알고리즘 은 다음 과 같은 소금 값 을 사용 합 니 다."$2a$",두 개의 cost 매개 변수,"$"및 64 비트 가".../0-9A-Za-z"의 문자 로 구 성 된 문자열 입 니 다.소금 값 에서 이 범위 밖의 문 자 를 사용 하면 crypt()가 빈 문자열 을 되 돌려 줍 니 다.두 cost 매개 변 수 는 순환 횟수 가 2 를 밑 으로 하 는 대수 입 니 다.그 범 위 는 04-31 입 니 다.이 범 위 를 초과 하면 crypt()가 실 패 했 습 니 다.
CRYPT_SHA 256-SHA-256 알고리즘 은$5$로 시작 하 는 16 글자 문자열 의 소금 값 을 사용 하여 산열 합 니 다.소금 값 문자열 이"rounds=
CRYPT_SHA 512-SHA-512 알고리즘 은$6$로 시작 하 는 16 글자 문자열 의 소금 값 을 사용 하여 산열 합 니 다.소금 값 문자열 이"rounds=
3.Sha 1 암호 화
string sha1 ( string $str [, bool $raw_output = false ] )
매개 변수
str -- 입력 문자열.
raw_output -- 선택 가능 한 rawoutput 매개 변 수 는 TRUE 로 설정 되 어 있 습 니 다.sha1 요약 은 20 문자 길이 의 원본 형식 으로 되 돌아 갑 니 다.그렇지 않 으 면 반환 값 은 40 문자 길이 의 16 진수 입 니 다.
이것 은 역 암호 화 할 수 없 는 암호 화 입 니 다.다음 코드 를 실행 합 니 다.
$password = '123456';
echo sha1($password);
얻 은 결 과 는 7c4a8d09ca 3762 af61e 59520943 dc 26494 f8941b 입 니 다.
상기 몇 가 지 는 역 암호 화 할 수 없 지만 사전 을 찾 는 방식 에 따라 복호화 할 수 있다.아래 주소 에 서 는 위의 암호 화 결 과 를 복호화 할 수 있 는 기능 을 제공 합 니 다.
http://www.cmd5.com/
그러면 여러분 들 이 비밀 을 넣 어도 소 용이 없 는 거 아 닙 니까?사실은 그렇지 않 습 니 다.암호 화가 충분히 복잡 하면 해 제 될 가능성 이 적 습 니 다.예 를 들 어 상기 세 가지 암호 화 방식 으로 암호 화 를 혼합 한 후에 저 는 phop 의 암호 화 라 이브 러 리 를 추천 하 겠 습 니 다.
4.URL 암호 화
string urlencode ( string $str )
이 함 수 는 문자열 을 인 코딩 하고 URL 의 요청 부분 에 사용 할 수 있 으 며 변 수 를 다음 페이지 에 전달 할 수 있 습 니 다.
문자열 을 되 돌려 줍 니 다.이 문자열 은- 을 제외 합 니 다.이외 의 모든 비 자모 숫자 문 자 는 백분율(%)로 바 뀌 고 두 자리 16 진수 로 바 뀌 며 빈 칸 은 플러스(+)로 인 코딩 됩 니 다.이 인 코딩 은 WWW 폼 POST 데이터 의 인 코딩 방식 과 같 으 며,application/x-ww-form-urlencoded 의 미디어 형식 인 코딩 방식 과 같 습 니 다.역사적 인 이유 로 이 인 코딩 은 빈 칸 을 플러스(+)로 인 코딩 하 는 데 RFC 1738 인 코딩 과 다 릅 니 다.
string urldecode ( string $str )
인 코딩 된 문자열 의%\#를 디 코딩 합 니 다.플러스('+')는 빈 칸 문자 로 디 코딩 되 었 습 니 다.
이것 은 역 암호 화 입 니 다.urlencode 방법 은 암호 화 에 사용 되 고 urldecode 방법 은 복호화 에 사용 되 며 다음 코드 를 실행 합 니 다.
$url = 'http://www.xxx.com/CraryPrimitiveMan/';
$encodeUrl = urlencode($url);
echo $encodeUrl . "";// 홈 페이지 에 보 여 주 는 것 이 라면
로 수정 합 니 다.
echo urldecode($encodeUrl);
얻 은 결 과 는 다음 과 같다.
http%3A%2F%2Fwww.xxx.com%2FCraryPrimitiveMan%2F
http://www.xxx.com/CraryPrimitiveMan/
RFC 3986 의 암호 화 URL 을 기반 으로 하 는 방법 은 다음 과 같다.
function myUrlEncode($string) {
$entities = array('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D');
$replacements = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
return str_replace($entities, $replacements, urlencode($string));
}
5.Base 64 정보 인 코딩 암호 화string base64_encode ( string $data )
base 64 를 사용 하여 data 를 인 코딩 합 니 다.
이 인 코딩 을 설계 한 것 은 이 진 데 이 터 를 순수 하지 않 은 8-bit 전송 층 을 통 해 전송 할 수 있 도록 하 는 것 입 니 다.예 를 들 어 전자우편 의 주체 입 니 다.
Base 64-encoded 데 이 터 는 원본 데이터 보다 33%정도 많은 공간 을 차지 합 니 다.
string base64_decode ( string $data [, bool $strict = false ] )
base 64 인 코딩 된 data 를 디 코딩 합 니 다.
매개 변수
data -- 인 코딩 된 데이터.
strict -- 입력 한 데이터 가 base 64 알파벳 을 초과 하면 FALSE 로 돌아 갑 니 다.
다음 코드 를 실행 합 니 다:
$name = 'CraryPrimitiveMan';
$encodeName = base64_encode($name);
echo $encodeName . "
";
echo base64_decode($encodeName);
그 결 과 는 다음 과 같다.
Q3JhcnlQcmltaXRpdmVNYW4=
CraryPrimitiveMan
추천phopass 0.3 테스트 를 통 해 데이터 베 이 스 를 저장 하기 전에 해시 가 사용자 의 비밀 번 호 를 보호 하 는 표준 방식 을 진행 합 니 다.많은 자주 사용 하 는 해시 알고리즘,예 를 들 어 md5,심지어 sha 1 은 암호 저장 에 있어 안전 하지 않 습 니 다.해 킹 은 그 알고리즘 을 사용 하여 쉽게 암 호 를 풀 수 있 기 때 문 입 니 다.
비밀 번 호 를 해시 하 는 가장 안전 한 방법 은 bcrypt 알고리즘 을 사용 하 는 것 입 니 다.원본 을 여 는 phopass 라 이브 러 리 는 사용 하기 쉬 운 클래스 로 이 기능 을 제공 합 니 다.
<?php
// Include phpass
require_once('phpass-03/PasswordHash.php')
// ( )
$hasher = new PasswordHash(8, false);
// 。$hashedPassword 60 .
$hashedPassword = $hasher->HashPassword('my super cool password');
// $hashedPassword !
// ( ) ,
$hasher->CheckPassword('the wrong password', $hashedPassword); // false
$hasher->CheckPassword('my super cool password', $hashedPassword); // true
?>
이상 은 바로 본 고의 PHP 암호 화 방식 에 대한 소개 입 니 다.여러분 들 이 좋아 하 시 기 를 바 랍 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.