PHP에서 문자열을 암호화하고 해독하는 방법은 무엇입니까?

Phpeseo Munjayeol Eul Amhohwahago Haedoghaneun Bangbeob Eun Mueos Ibnikka



암호화 데이터를 해독할 키가 없는 사람이 이해할 수 없는 비밀 코드 또는 형식으로 변환하는 프로세스입니다. 복호화 해당 정보를 가져와 원래의 읽기 가능한 형식으로 되돌리는 절차입니다. PHP에서, 암호화, 그리고 암호 해독 암호, 신용 카드 정보 및 기타 개인 데이터와 같은 민감한 데이터를 보호하는 데 사용할 수 있습니다.

그만큼 암호화 알고리즘은 암호화하려는 데이터 문자열을 가져와 선택한 암호화 방법을 사용하여 데이터를 암호화해야 합니다. 그런 다음 알고리즘은 암호화된 데이터를 데이터베이스나 파일에 저장할 수 있는 형식으로 반환해야 합니다.

에게 해독하다 데이터를 암호화하는 데 사용된 데이터를 해독하려면 동일한 암호화 방법을 사용해야 합니다. 즉, 나중에 데이터를 디코딩하는 데 사용할 수 있도록 키를 어딘가에 저장해야 합니다.







PHP 문자열을 암호화하고 해독하는 방법?

PHP 문자열은 암호화 그리고 해독 사용: openssl_encrpyt() 그리고 openssl_decrypt() 방법, 각각.



openssl_encrypt() 함수를 사용하여 문자열 암호화

에게 문자열을 암호화하다 PHP에서 openssl_encrypt() 함수를 사용하려면 일반 텍스트 문자열, 암호화 방법 및 키를 제공해야 합니다. 이 기능은 암호화된 데이터를 반환하므로 안전하게 저장하거나 전송할 수 있습니다.



구문 openssl_encrypt() 방법은 다음과 같습니다.





문자열 openssl_encrypt ( $데이터 , $방법 , $키 , $옵션 = 0 , $iv , $태그 = 없는 , 당신 , 정수 $tag_length = 16 )
  • $데이터: 암호화하려는 문자열 또는 데이터입니다.
  • $방법: 사용하려는 암호화 방법 또는 암호. 다음을 사용하여 지원되는 암호화 방법 목록을 얻을 수 있습니다. openssl_get_cipher_methods()
  • $키: 데이터를 암호화하는 데 사용할 암호화 키입니다. 선택한 암호 방법에 따라 적절한 길이와 임의성을 가진 문자열이어야 합니다.
  • 옵션: 특정 암호화 옵션에 대한 추가 플래그를 포함할 수 있는 선택적 매개변수입니다. 다음을 사용하여 플래그를 결합할 수 있습니다. 비트 OR(|) 공통 플래그에는 다음이 포함됩니다. OPENSSL_RAW_DATA 그리고 OPENSSL_ZERO_PADDING .
  • $iv: 암호화에 사용되는 초기화 벡터(iv). 문자열로 제공되는 임의의 고유한 값이어야 합니다.
  • $태그: GCM(Galois/Counter Mode) 또는 CCM(Counter with CBC-MAC)과 같은 AEAD(Authenticated Encryption with Associated Data) 암호화 모드에 사용되는 선택적 매개변수입니다. 암호화 시 생성된 인증 태그를 저장합니다.
  • 당신의: AEAD 암호 모드에 사용할 수 있는 추가 인증 데이터입니다.
  • $태그_길이: 인증 태그의 길이입니다. GCM 모드의 경우 태그 길이 범위는 4~16바이트입니다.

예를 들어:


$단순 문자열 = 'Linuxhint에 오신 것을 환영합니다. \N ' ;
에코 '원래 문자열: ' . $단순 문자열 ;
$ciphering = 'AES-128-CTR' ;
$iv_length = openssl_cipher_iv_length ( $ciphering ) ;
$옵션 = 0 ;
$encryption_iv = '1234567891011121' ;
$encryption_key = '리눅스' ;
$암호화 = openssl_encrypt ( $단순 문자열 , $ciphering ,
$encryption_key , $옵션 , $encryption_iv ) ;
에코 '암호화된 문자열: ' . $암호화 . ' \N ' ;
?>

코드는 먼저 기본 텍스트를 선언합니다. “리눅스힌트에 오신 것을 환영합니다” echo 명령을 사용하여 표시합니다. 그런 다음 사용할 암호화 알고리즘을 지정하고, AES-128-CTR . 또한 다음을 사용합니다. openssl_cipher_iv_length() 크기를 계산하는 함수 초기화 벡터(IV) 이 암호에 필요합니다.

코드는 암호화를 설정합니다. iv 가치 '1234567891011121' 및 암호화 키 '리눅스' . 다음을 사용하여 암호화가 완료되면 암호화된 문자열이 echo 명령을 사용하여 표시됩니다. openssl_encrypt() 기능. 암호화에 사용되는 임의 초기화 벡터로 인해 최종 암호화 문자열은 매번 달라집니다.

openssl_decrypt() 함수를 사용하여 문자열 복호화

PHP에서 문자열을 해독하려면 다음을 사용할 수 있습니다. openssl_decrypt() 기능. 이 함수는 암호화된 데이터, 암호화 방법 및 키를 입력으로 사용하고 복호화된 일반 텍스트를 반환합니다.

구문 openssl_decrypt() 방법은 다음과 같습니다.

문자열 openssl_decrypt ( $데이터 , $방법 , $키 , 정수 $옵션 = 0 , $iv , $태그 , 당신 )

함수에 전달되는 인수는 다음과 같습니다.

  • $데이터: 해독하려는 암호화된 문자열 또는 데이터입니다.
  • $방법: 암호화 중에 사용되는 암호화 방법 또는 암호입니다. 다음을 사용하여 지원되는 암호화 방법 목록을 얻을 수 있습니다. openssl_get_cipher_methods()
  • $키: 데이터를 암호화하는 데 사용된 암호화 키입니다. 암호화 중에 사용된 키와 일치해야 합니다.
  • 옵션: 특정 암호 해독 옵션에 대한 추가 플래그를 포함할 수 있는 선택적 매개변수입니다. 비트 OR(|) 연산자를 사용하여 플래그를 결합할 수 있습니다. 공통 플래그에는 다음이 포함됩니다. OPENSSL_RAW_DATA 그리고 OPENSSL_ZERO_PADDING .
  • $iv: 그만큼 초기화 벡터(IV) 암호화 중에 사용됩니다. 암호화 중에 사용되어 문자열로 전달된 것과 동일한 IV여야 합니다.
  • $태그: GCM(Galois/Counter Mode) 또는 CCM(Counter with CBC-MAC)과 같은 AEAD(Authenticated Encryption with Associated Data) 암호화 모드에 대한 인증 태그입니다. 인증에 실패하면 openssl_decrypt()는 FALSE를 반환합니다.
  • 당신의: AEAD 암호 모드의 암호화 중에 사용된 추가 인증 데이터입니다.

반환 값: 성공하면 해독된 문자열을 반환합니다. 그렇지 않으면 FALSE를 반환합니다.

예를 들어:


$encrypted_string = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
에코 '암호화된 문자열: ' . $encrypted_string . ' \N ' ;
$decryption_iv = '1234567891011121' ;
$ciphering = 'AES-128-CTR' ;
$옵션 = 0 ;
$decryption_key = '리눅스' ;
$복호화 = openssl_decrypt ( $encrypted_string , $ciphering ,
$decryption_key , $옵션 , $decryption_iv ) ;
에코 '해독된 문자열: ' . $복호화 ;
?>

이 코드의 벡터 길이는 다음을 사용하여 계산됩니다. openssl_cipher_iv_length() 기능 및 동일한 암호화 iv 및 키 매개변수가 암호화 중에 사용됩니다. 암호화 알고리즘은 다음과 같이 정의됩니다. AES-128-CTR .

이전에 암호화된 문자열은 암호화 알고리즘, 암호화 키, 설정 및 IV 값을 사용하여 복호화됩니다. openssl_decrypt() 기능. 그 결과 복호화된 텍스트는 echo 명령을 사용하여 표시됩니다.

결론

웹 사이트 생성에는 종종 다음이 포함됩니다. 암호화 및 해독 데이터. 암호화를 사용하여 중요한 데이터를 보호하면 사용자가 신원 도용, 사기 및 기타 보안 위협에 노출되는 것을 방지할 수 있습니다. PHP의 문자열은 함수에 의해 암호화 및 해독될 수 있습니다. openssl_encrypt() 그리고 openssl_decrypt() 기능. 암호화 알고리즘과 키를 신중하게 사용하면 PHP 애플리케이션에서 중요한 데이터를 처리하기 위한 강력하고 안전한 시스템을 만들 수 있습니다.