Dữ liệu bổ sung, xác thực. Điều này được sử dụng để xác minh thẻ xác thực được thêm vào bản mã, nhưng nó không được mã hóa hoặc lưu trữ trong bản mã nonce Một số chỉ được sử dụng một lần, cho mỗi tin nhắn. dài 12 byte key Khóa mã hóa (256-bit) Giá trị trả vềTrả về bản mã và thẻ xác thực dưới dạng một chuỗi byte nhị phân thô. (Định dạng. bản mã, sau đó gắn thẻ. ) Nếu bạn sử dụng PHP 7. 1+, thư viện này có hiệu suất rất tốt. Nếu bạn không sử dụng PHP 7. 1+, chúng tôi thực sự khuyên bạn nên cài đặt tiện ích mở rộng PHP Crypto. Tiện ích mở rộng này tăng đáng kể hiệu suất của thư viện này. Với phương pháp PHP thuần túy của chúng tôi, bạn sẽ có hiệu suất thấp Cài đặtCách ưa thích để cài đặt thư viện này là dựa vào Composer composer require "spomky-labs/php-aes-gcm" Cách sử dụng<?php use AESGCM\AESGCM; // The Key Encryption Key $K = hex2bin('feffe9928665731c6d6a8f9467308308feffe9928665731c'); // The data to encrypt (can be null for authentication) $P = hex2bin('d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39'); // Additional Authenticated Data $A = hex2bin('feedfacedeadbeeffeedfacedeadbeefabaddad2'); // Initialization Vector $IV = hex2bin('cafebabefacedbaddecaf888'); // $C is the encrypted data ($C is null if $P is null) // $T is the associated tag list($C, $T) = AESGCM::encrypt($K, $IV, $P, $A); // The value of $C should be hex2bin('3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710') // The value of $T should be hex2bin('2519498e80f1478f37ba55bd6d27618c') $P = AESGCM::decrypt($K, $IV, $C, $A, $T); // The value of $P should be hex2bin('d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39') Thẻ được thêm vàoMột số triển khai của cypher này có thể nối thêm thẻ ở cuối bản mã. Điều này thường được sử dụng bởi việc triển khai Java chẳng hạn Thư viện này cung cấp một cách dễ dàng để tạo ra một bản mã như vậy và đọc nó <?php use AESGCM\AESGCM; // The values $K, $P, $A, $IV hereafter have the same meaning as above // $C is the encrypted data with the appended tag $C = AESGCM::encryptAndAppendTag($K, $IV, $P, $A); // The value of $C should be hex2bin('3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda27102519498e80f1478f37ba55bd6d27618c') $P = AESGCM::decryptWithAppendedTag($K, $IV, $C, $A); // The value of $P should be hex2bin('d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b392519498e80f1478f37ba55bd6d27618c') Chiều dài thẻTheo mặc định, độ dài thẻ là 128 bit. Giá trị này rất được khuyến khích, tuy nhiên, bạn có thể cần sử dụng độ dài thẻ khác. Theo thông số kỹ thuật của cypher, độ dài thẻ có thể là 128, 120, 112, 104 hoặc 96 bit <?php use AESGCM\AESGCM; // The values $K, $P, $A, $IV hereafter have the same meaning as above $TL = 96; // In this example the tag length will be 96 bits list($C, $T) = AESGCM::encrypt($K, $IV, $P, $A, $TL); // The value of $C should be hex2bin('3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710') // The value of $T should be hex2bin('2519498e80f1478f37ba55bd') Độ dài thẻ được tự động tính toán trong quá trình giải mã bằng phương pháp <?php // The values $K, $IV, $C, $A hereafter have the same meaning as above $TL = 96; // In this example the tag length will be 96 bits $P = AESGCM::decryptWithAppendedTag($K, $IV, $C, $A, $TL);Ủng hộ Tôi mang đến giải pháp cho vấn đề của bạn và trả lời câu hỏi của bạn Nếu bạn thực sự yêu thích dự án đó và công việc tôi đã làm hoặc nếu bạn muốn tôi ưu tiên các vấn đề của bạn, thì bạn có thể giúp tôi một vài 🍻hoặc hơn Đóng gópYêu cầu các tính năng mới, sửa lỗi và tất cả các ý tưởng khác để làm cho thư viện này trở nên hữu ích đều được chào đón. Đóng góp tốt nhất mà bạn có thể cung cấp là khắc phục các sự cố đã mở khi cần trợ giúp Vui lòng đảm bảo tuân theo các phương pháp hay nhất này điểm chuẩnTrong thư mục <?php use AESGCM\AESGCM; // The Key Encryption Key $K = hex2bin('feffe9928665731c6d6a8f9467308308feffe9928665731c'); // The data to encrypt (can be null for authentication) $P = hex2bin('d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39'); // Additional Authenticated Data $A = hex2bin('feedfacedeadbeeffeedfacedeadbeefabaddad2'); // Initialization Vector $IV = hex2bin('cafebabefacedbaddecaf888'); // $C is the encrypted data ($C is null if $P is null) // $T is the associated tag list($C, $T) = AESGCM::encrypt($K, $IV, $P, $A); // The value of $C should be hex2bin('3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710') // The value of $T should be hex2bin('2519498e80f1478f37ba55bd6d27618c') $P = AESGCM::decrypt($K, $IV, $C, $A, $T); // The value of $P should be hex2bin('d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39')0, có sẵn một tập lệnh nhỏ để chạy các tiêu chuẩn mã hóa và giải mã. Bạn có thể chạy nó trên môi trường của mình để kiểm tra xem các hoạt động mã hóa/giải mã mất bao nhiêu thời gian |