>  기사  >  백엔드 개발  >  PHP 암호화의 역할

PHP 암호화의 역할

藏色散人
藏色散人원래의
2019-09-17 11:42:342699검색

PHP 암호화의 역할

PHP 암호화의 역할

암호화: 데이터를 암호화하기 위해 일반 텍스트가 표시되지 않습니다.

PHP 개발 과정에서 일부 데이터(예: 사용자 비밀번호)를 암호화해야 하는 경우가 많습니다.

1. 암호화 유형:

1 단방향 해시 암호화

는 모든 길이의 정보를 해시하는 것입니다. 고정 길이 출력을 얻기 위한 계산 이 해시 계산 프로세스는 단방향입니다. 즉, 고정 길이 출력 정보를 계산하여 입력 정보를 얻을 수 없습니다.

(1) 기능: 눈사태 효과, 고정 길이 출력 및 되돌릴 수 없음.

(2) 역할은 데이터 무결성을 보장하는 것입니다.

(3) 암호화 알고리즘: md5(표준 키 길이 128비트), sha1(표준 키 길이 160비트), md4, CRC-32

2. 대칭 해시 암호화

대칭 암호화는 암호화 및 복호화를 의미합니다. 동일한 키이거나 서로 추론될 수 있습니다.

(1) 암호화 당사자와 복호화 당사자는 동일한 키를 사용합니다.

(2) 암호화 및 복호화 속도가 비교적 빨라 장기간 데이터 사용에 적합합니다.

(3) 키 전송 과정은 안전하지 않고 깨지기 쉬우며, 키 관리도 번거롭습니다.

(4) 암호화 알고리즘: DES(Data Encryption Standard), 3DES, AES(Advanced Encryption Standard, 128, 192, 256, 512비트 키 암호화 지원), Blowfish.

3. 비대칭 해시 암호화

비대칭 암호화와 복호화는 서로 다른 키를 사용합니다. 그 중 하나는 외부에 공개되는 공개 키이고, 다른 하나는 소유자에게만 알려진 개인 키입니다.

(1) 각 사용자는 암호화를 위한 한 쌍의 키(공개 키와 개인 키)를 가지고 있습니다.

(2) 공개 키 암호화, 개인 키 복호화, 개인 키 암호화, 공개 키 복호화.

(3) 공개 키 전송 과정은 안전하지 않으며 쉽게 도난당하고 교체될 수 있습니다.

(4) 공개키가 사용하는 키 길이가 매우 길기 때문에 공개키의 암호화 속도가 매우 느려 일반적으로 암호화에 사용되지 않습니다.

(5) 특정 사용자는 자신의 개인 키를 사용하여 암호화하고, 다른 사용자는 공개 키를 사용하여 암호를 해독하여 디지털 서명 기능을 달성합니다.

(6) 공개 키 암호화의 또 다른 기능은 키 교환을 실현하는 것입니다.

(7) 암호화 및 서명 알고리즘: RSA, ELGamal.

(8) 공개 키 서명 알고리즘: DSA.

참고:

(1) RSA: RSA Company에서 개발한 것으로, 가변 길이 키를 지원하는 공개 키 알고리즘입니다. 암호화해야 하는 파일 블록의 길이도 가변적입니다.

(2) DSA. (디지털 서명) 알고리즘): 디지털 서명 알고리즘은 표준 DSS(Digital Signature Standard)입니다.

(3) 비대칭 암호화 알고리즘은 대칭 암호화 알고리즘보다 훨씬 느리게 실행되므로 대량의 데이터를 암호화해야 하는 경우 암호화 및 복호화 속도를 향상시키기 위해 대칭 암호화 알고리즘을 사용하는 것이 좋습니다.

대칭 암호화 알고리즘은 서명을 구현할 수 없으므로 서명은 비대칭 알고리즘만 가능합니다.

(4) 대칭 암호화 알고리즘의 키 관리는 복잡한 프로세스이므로 키 관리가 보안을 직접적으로 결정하므로 데이터 양이 적을 경우 비대칭 암호화 알고리즘 사용을 고려할 수 있습니다.

(5) 실제 작업 과정에서는 일반적으로 비대칭 암호화 알고리즘을 사용하여 대칭 알고리즘의 키를 관리한 다음 대칭 암호화 알고리즘을 사용하여 데이터를 암호화합니다. 이러한 방식으로 두 가지의 장점을 통합합니다. 빠른 암호화 속도의 장점뿐만 아니라 안전하고 편리한 키 관리의 장점도 구현한 암호화 알고리즘입니다.

2. PHP에서 일반적으로 사용되는 암호화 기능:

1.MD5 암호화:

string md5 ( string $str [, bool $raw_output = false ] )

(1) md5()는 기본적으로 32자의 16진수 형식으로 해시 값을 반환하며 두 개를 허용합니다. 매개변수 중 첫 번째는 암호화할 문자열이고, 두 번째는 raw_output의 부울 값입니다.

기본값은 false입니다. true로 설정하면 md5()는 원본 16비트 바이너리 형식 메시지 다이제스트를 반환합니다.

( 2) md5()는 단방향 암호화이며 역방향 복호화 알고리즘이 없지만 수집, 열거, 충돌 등을 통해 일부 일반적인 문자열을 해독할 수 있습니다. 2. 암호화 암호화:

string crypt ( string $str [, string $salt ] )

(1)crypt() 두 가지 허용 매개변수 중 첫 번째는 암호화해야 하는 문자열이고 두 번째는 솔트 값입니다(암호화 간섭 값이며 제공되지 않으면 기본적으로 PHP에서 자동으로 생성됨).

해시된 문자열 또는 13자 미만의 문자열로, 후자는 솔트 값을 구별하기 위한 것입니다.

(2)crypt()는 md5와 동일한 단방향 암호화입니다.

3.Sha1 암호화:

string sha1 ( string $str [, bool $raw_output = false ])

(1)은 md5와 매우 유사합니다. 차이점은 sha1()이 기본적으로 40자 해시 값을 반환한다는 것입니다. 첫 번째 매개변수는 동일합니다. ,

두 번째는 raw_output의 부울 값이며 기본값은 false입니다. true로 설정하면 sha1()은 원래의 20비트 원본 형식 메시지 다이제스트를 반환합니다

(2) sha1()은 다음과 같습니다. 단일 라인 암호화, 역방향 암호 해독 알고리즘 없음

4. Urlencode 암호화:

 string urlencode ( string $str )

(1) 하나의 매개변수, 암호화할 문자열 전달(일반적으로 URL을 암호화하는 데 사용됨)

(2) urlencode는 양방향입니다. 암호화를 사용하면 urldecode를 사용하여 암호화할 수 있습니다( 엄밀히 말하면 암호화가 아님)

(3) 문자열을 반환합니다. -_를 제외하고 이 문자열에서 영숫자가 아닌 모든 문자는 뒤에 2개가 오는 백분율 기호로 대체됩니다. 16진수, 공백은 더하기 기호(+)로 인코딩됩니다.

(3) urlencode()의 일반적인 변환 문자

    ? => %3F
    = => %3D
    % => %25
    & => %26
    \ => %5C
空格 => %5C

5.base64编码加密:

string base64_decode ( string $encoded_data )

(1)base64_encode()接受一个参数,也就是要编码的数据(这里不说字符串,是因为很多时候base64用来编码图片)

(2)base64_encode()为双向加密,可用base64_decode()来解密

위 내용은 PHP 암호화의 역할의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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