현재 위치: > 최신 기사 목록> PHP에서 Pack () 함수를 사용하여 사용자 정의 암호화 알고리즘의 초기 포장 로직을 구현하는 방법은 무엇입니까?

PHP에서 Pack () 함수를 사용하여 사용자 정의 암호화 알고리즘의 초기 포장 로직을 구현하는 방법은 무엇입니까?

M66 2025-06-15

개발 중에는 종종 암호화 알고리즘을 사용하여 데이터를 처리합니다. PHP에는 이진 데이터를 형식화하는 데 종종 사용되는 매우 강력한 기능 -Pack () 가 있습니다. 전통적인 의미에서 암호화 기능은 아니지만 Pack () 의 ​​합리적인 사용은 우리와 협력하여 맞춤 암호화 알고리즘의 "포장 로직"을 구축 할 수 있습니다.

1. Pack () 함수를 이해하십시오

pack () 함수의 함수는 지정된 형식의 이진 문자열로 데이터를 패키지하는 것입니다. 기본 구문은 다음과 같습니다.

 string pack ( string $format , mixed $values [, mixed $... ] )

여기서 $ 형식은 후속 $ 값 매개 변수를 패키지하는 방법을 지정하는 형식 문자열입니다. 예를 들어:

 $binary = pack("N", 123456); // ~에 따르면 32 서명되지 않은 길다(big-endian)포장 번호

2. 암호화 아이디어 : 포장 + 인코딩

데이터를 이진 형식으로 패키지 한 다음 Base64 인코딩 또는 사용자 정의 변환 규칙을 통해 "암호화"할 수 있습니다. 이 방법은 AES 및 RSA와 같은 전문 암호화 알고리즘과 비교할 수는 없지만 일부 비정규 데이터 시나리오에서 가벼운 보호 아이디어를 제공합니다.

3. 간단한 사용자 정의 암호화 포장 로직을 구성하십시오

암호화하려는 데이터에 다음 부분이 포함되어 있다고 가정합니다.

  • 사용자 ID (정수)

  • 타임 스탬프 (정수)

  • 작동 유형 (1 바이트 식별자)

  • 고정 검증 코드 (문자열)

팩 ()을 사용하여 다음 내용을 포장합시다.

 function custom_encrypt($userId, $actionType) {
    $timestamp = time();
    $checkCode = 'm66'; // 고정 검증 코드

    // 이진 문자열에 데이터를 패키지합니다
    $binaryData = pack("NNCa3", $userId, $timestamp, $actionType, $checkCode);

    // 사용 base64 코딩,궁극적으로 양도 가능을 생성하십시오“암호화”끈
    return base64_encode($binaryData);
}

형식 문자열 "nnca3" 의 의미는 다음과 같습니다.

  • N : 32 비트 서명되지 않은 긴 정수 (userId)

  • N : 32 비트 서명되지 않은 긴 패턴 (타임 스탬프)

  • C : 8 비트 서명되지 않은 문자 (ActionType)

  • A3 : 3 바이트 문자열 (체크 코드)

우리는 그것을 테스트 할 수 있습니다 :

 echo custom_encrypt(1024, 5);

출력은 패키지 및 인코딩 된 문자열입니다.

 AAAAAAgAAZ8ZziUAbTY2AA==

4. 데이터를 풀리는 방법

Unpack () 를 통해 암호화 된 데이터를 원래 콘텐츠로 다시 해결할 수 있습니다.

 function custom_decrypt($encoded) {
    $binaryData = base64_decode($encoded);
    $data = unpack("NuserId/Ntimestamp/CactionType/a3checkCode", $binaryData);

    return $data;
}

사용 방법 :

 $encoded = custom_encrypt(2048, 3);
$decoded = custom_decrypt($encoded);
print_r($decoded);

출력은 다음과 같습니다.

 Array
(
    [userId] => 2048
    [timestamp] => 1716821234
    [actionType] => 3
    [checkCode] => m66
)

5. URL 전송에 적용하십시오

Base64에 인코딩 된 문자열이기 때문에 URL에 안전하게 추가 할 수 있습니다.

 $url = "https://m66.net/api/receive.php?token=" . urlencode(custom_encrypt(2048, 1));

수신기 암호 해독에 대해서도 마찬가지입니다.

 $token = $_GET['token'];
$data = custom_decrypt($token);

6. 요약

Pack () 는 PHP에서 간과되었지만 매우 강력한 도구입니다. 기본 이진 데이터를 정확하게 제어 할 수 있습니다. 일부 시나리오에서는 경량 암호화 또는 데이터 캡슐화가 필요한 시나리오에서 Base64_encode ()Unpack () 와 함께 사용하면 사용자 정의 암호화 전송 로직을 빠르게 구축 할 수 있습니다.

물론,이 접근법은 민감한 정보를 처리하는 데 적합하지 않으며, 진정으로 안전한 암호화보다 가벼운 인코딩/난독 화 방식으로 더 적합합니다. 사용자 암호, 재무 데이터 등을 처리하는 경우 OpenSSL 또는 Libsodium과 같은 표준 암호화 알고리즘을 선택하십시오.

Pack () 의 ​​다양한 형식 기호를 마스터하면 네트워크 프로토콜의 패키징 프로세스를 시뮬레이션하고 맞춤형 API 설계에서 큰 성과를 거둘 수 있습니다.