Php aes-gcm

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 đặt

Cá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ào

Mộ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 AESGCM::decrypt. Tuy nhiên, nếu thẻ được thêm vào cuối bản mã và nếu nó không phải là 128 bit, thì nó phải được đặt

<?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

Php aes-gcm

Đóng góp

Yê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ẩn

Trong 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