PHP 암호 화 기술 의 간단 한 실현
직접 하 십시오.로그 인 페이지 를 예 로 들 면:
<?php
require_once 'config/database.config.php';
$act=$_REQUEST['act'];
$username=$_POST['username'];
$password=md5($_POST['password']);
if ($act=='reg') {
$sql="INSERT INTO user(username,password) VALUES('{$username}','{$password}')";
$result=mysqli_query($link, $sql);
if ($result) {
echo "Success";
echo "<meta http-equiv='refresh' content='1;url=login.html'/>";
}else {
echo "Failure!";
echo "<meta http-equiv='refresh' content='1;url=reg.html'/>";
}
}elseif ($act=='login') {
$sql="SELECT * FROM user WHERE username='{$username}' AND password='{$password}'";
$result=mysqli_query($link, $sql);
$validate=mysqli_fetch_array($result);
//var_dump($validate);
if ($validate) {
echo "success";
echo "<meta http-equiv='refresh' content='1;url=http://www.baidu.com'/>";
}else {
echo "failure";
echo "<meta http-equiv='refresh' content='1;url=login.html'/>";
}
}
주로 기억 이 맞 을 때 도 MD5 를 사용 하기 때문에 데이터베이스 에 존재 할 때 비밀번호 로 저 장 됩 니 다.
mysql> SELECT * FROM user;
+----+----------+----------------------------------+
| id | username | password |
+----+----------+----------------------------------+
| 1 | 123 | d41d8cd98f00b204e9800998ecf8427e |
| 2 | 123 | 5e12a8f9c9e959060fdcaea165393039 |
| 3 | | d41d8cd98f00b204e9800998ecf8427e |
| 4 | root | 202cb962ac59075b964b07152d234b70 |
| 5 | root | 0c51f0ba4316a5c844397f69effe2d01 |
+----+----------+----------------------------------+
2.Crypt 암호 화 알고리즘같은 단 방향 암호 화 알고리즘 으로 암호 로 명문 암 호 를 직접 얻 을 수 없습니다(MD5 와 마찬가지).
문법:string crypt(string$str[,string$salt]),$str 는 암호 화 된 명문 이 고$salt 는 간섭 항목 으로 캡 사이 신 소음 으로 이해 할 수 있 습 니 다.
/**
* Crypt
*/
echo crypt('shit');
echo "<hr/>";
echo crypt('shit','im');
echo "<hr/>";
if (CRYPT_EXT_DES) {
echo crypt('shit','this is a test');
}
echo "<hr/>";
if (CRYPT_MD5) {
echo crypt('shit','$1$this is a test$');
}
기본적으로 할 말 이 없습니다.조금 만 요.crypt 의 암호 화 는 서로 다른 암호 화 알고리즘 이 있 습 니 다.기본 적 인 것 은 MD5 암호 화 입 니 다.그러나'소금 값'을 정 하지 않 으 면 새로 고침 할 때마다 다른 결과 입 니 다.그 다음 에 소금 값 을 지정 할 수 있 습 니 다.구체 적 으로 매 뉴 얼 을 참조 할 수 있 습 니 다.각 알고리즘 의 소금 값 길 이 는 다 릅 니 다.예 를 들 어 상기 DES 와 MD5 등 결 과 는 다음 과 같 습 니 다.
1223b8c30a347321299611f873b449ad
$1$ed0.Ph..$fPbfhSOMLyNdtZn9krT8X/
im37cLeO/JPaQ
th12A1V7QCns.
$1$this is $Bu9FE8Y8oGnIbftjDA4ez0
DES 는 두 자리 만 얻 을 수 있 고 MD5 는 8 자리 만 얻 었 습 니 다.용법 도 많 지 않 으 니 소금 값 을 입력 하 는 것 이 좋 겠 다.
Sha 1
마찬가지 로 단 방향 암호 화로 풀 수 없다(그러나 인터넷 의 방법 은 모두 데이터베이스 와 같은'위 폭력'으로 풀 수 있다).
MD5 와 의 차 이 는 더 긴(40 비트)16 진수 문자열(MD5 는 32 비트)을 되 돌려 주 는 것 입 니 다.
/**
* Sha1
*/
echo "<hr/>";
echo sha1('shit');
echo "<hr/>";
echo sha1('shit',true);
echo "<hr/>";
echo sha1('admin');
따라서 일반 암호 화 저장 은 이 비밀 번 호 를 단독으로 사용 하지 말고 이렇게 혼합 해서 사용 하 는 것 이 좋 습 니 다.
echo "<hr/>";
echo sha1(sha1('admin',true));
echo "<hr/>";
echo sha1(md5('admin'));
암호 화 되 어 있 고 외부 에서 자체 적 으로 간단 한 암호 화 를 한 것 과 같 습 니 다!!4.URL 인 코딩 암호 화
주소 표시 줄 정 보 를 암호 화하 기;
양 방향,urlencode 와 urldecode;
/**
* URL
*/
$str="this is a test";
$result=urlencode($str);
echo $result;
echo "<hr/>";
echo urldecode($result);
echo "<hr/>";
$str="login.php?username=shit&action=act%3 hape#123\\";
echo urlencode($str);
echo "<hr/>";
echo "<a href='index.php?username=shit&gender=male'>Shit Login</a>";
print_r($_GET);
echo "<hr/>";
// , ,
// username&shit , ,
echo "<a href='index.php?username=username&shit&gender=male'>Shit Login2</a>";
print_r($_GET);
echo "<hr/>";
$str="username&shit";
$str2="username=".urlencode($str)."&gender=".urlencode("male");
echo "<a href='index.php?".$str2."'>Shit Login3</a>";
print_r($_GET);
echo "<hr/>";
//baidu example
//https://www.baidu.com/s?ie=utf8&wd=url%E7%BC%96%E7%A0%81%E5%8A%A0%E5%AF%86&tn=87048150_dg
//search url
결 과 는 다음 과 같다.
this+is+a+test
this is a test
login.php%3Fusername%3Dshit%26action%3Dact%253+hape%23123%5C
Shit LoginArray ( [username] => username&shit [gender] => male )
Shit Login2Array ( [username] => username&shit [gender] => male )
Shit Login3Array ( [username] => username&shit [gender] => male )
그래서 기능 은 주소 표시 줄 이 더욱 안전 하고 명문 으로 전송 되 지 않 으 며 다른 특수 한 상황 을 해결 하 는 전달 이다.5.Base 64 인 코딩 암호 화
사실 base 64 는 암호 화 기술 이 아니 라 data 에 대해 base 64 인 코딩 을 할 뿐 암호 화 기술 이 라 고 볼 수 있다.
/**
* Base64
*/
$data="I am king";
echo base64_encode($data);
echo "<hr/>";
echo base64_decode(base64_encode($data));
echo "<hr/>";
echo base64_encode(" ");
echo "<hr/>";
// echo base64_decode("R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==");
$data=file_get_contents("0.jpg");
echo base64_encode($data);
내용 을 암호 화 하 는 것 과 같다.총결산
단일 해시 암호 화:고정된 길이 의 출력 을 얻 으 면 단 방향 입 니 다.
대칭 해시 암호 화:같은 키 를 사용 하여 암호 화 복호화 하면 서로 계산 할 수 있 습 니 다.(알고리즘 이 간단 하고 효율 이 높 으 며 비용 이 적 으 며 대량의 데 이 터 를 암호 화 하기에 적합 합 니 다)DES 등
비대 칭 암호 화 기술:키 가 다 르 고 공개 키 와 비밀 키 의 구분
이상 의 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에 따라 라이센스가 부여됩니다.