Làm cách nào để kiểm tra xem một chuỗi có được mã hóa trong PHP không?

Các hoạt động này được thiết kế để mã hóa và giải mã khóa dữ liệu. Họ sử dụng khóa AWS KMS trong các hoạt động mã hóa và họ không thể chấp nhận hơn 4 KB (4096 byte) dữ liệu. Mặc dù bạn có thể sử dụng chúng để mã hóa một lượng nhỏ dữ liệu, chẳng hạn như mật khẩu hoặc khóa RSA, nhưng chúng không được thiết kế để mã hóa dữ liệu ứng dụng

Để mã hóa dữ liệu ứng dụng, hãy sử dụng các tính năng mã hóa phía máy chủ của dịch vụ AWS hoặc thư viện mã hóa phía máy khách, chẳng hạn như AWS Encryption SDK hoặc ứng dụng khách mã hóa Amazon S3

Mã hóa khóa dữ liệu

Hoạt động Mã hóa được thiết kế để mã hóa các khóa dữ liệu, nhưng nó không được sử dụng thường xuyên. Các hoạt động GenerateDataKey và GenerateDataKeyWithoutPlaintext trả về các khóa dữ liệu được mã hóa. Bạn có thể sử dụng phương pháp này khi đang di chuyển dữ liệu đã mã hóa sang một Khu vực khác và muốn mã hóa khóa dữ liệu của khu vực đó bằng khóa KMS trong Khu vực mới

Trong các ngôn ngữ yêu cầu đối tượng máy khách, các ví dụ này sử dụng đối tượng máy khách AWS KMS mà bạn đã tạo trong phần Tạo máy khách

Java

Để biết chi tiết, hãy xem phương thức mã hóa trong AWS SDK để tham khảo API Java

// Encrypt a data key
//
// Replace the following example key ARN with any valid key identfier
String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";
ByteBuffer plaintext = ByteBuffer.wrap(new byte[]{1,2,3,4,5,6,7,8,9,0});

EncryptRequest req = new EncryptRequest().withKeyId(keyId).withPlaintext(plaintext);
ByteBuffer ciphertext = kmsClient.encrypt(req).getCiphertextBlob();
C#

Để biết chi tiết, hãy xem Phương thức mã hóa trong AWS SDK để biết. NET

// Encrypt a data key
//
// Replace the following example key ARN with any valid key identfier
String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";
MemoryStream plaintext = new MemoryStream();
plaintext.Write(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }, 0, 10);

EncryptRequest encryptRequest = new EncryptRequest()
{
    KeyId = keyId,
    Plaintext = plaintext
};
MemoryStream ciphertext = kmsClient.Encrypt(encryptRequest).CiphertextBlob;
Trăn

Để biết chi tiết, hãy xem phương thức mã hóa trong AWS SDK dành cho Python (Boto3)

# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
Viên hồng ngọc

Để biết chi tiết, hãy xem phương thức phiên bản mã hóa trong AWS SDK dành cho Ruby

# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00"

response = kmsClient.encrypt({
  key_id: key_id,
  plaintext: plaintext
})

ciphertext = response.ciphertext_blob
PHP

Để biết chi tiết, hãy xem Phương thức mã hóa trong AWS SDK cho PHP

// Encrypt a data key
//
// Replace the following example key ARN with any valid key identfier
$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$message = pack('c*',1,2,3,4,5,6,7,8,9,0);

$result = $KmsClient->encrypt([
    'KeyId' => $keyId, 
    'Plaintext' => $message, 
]);

$ciphertext = $result['CiphertextBlob'];
Nút. js

Để biết chi tiết, hãy xem thuộc tính mã hóa trong AWS SDK dành cho JavaScript trong Node. js

// Encrypt a data key
//
// Replace the following example key ARN with any valid key identfier
const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
const Plaintext = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]);
kmsClient.encrypt({ KeyId, Plaintext }, (err, data) => {
  if (err) console.log(err, err.stack); // an error occurred
  else {
    const { CiphertextBlob } = data;
      ...
  }
});
PowerShell

Để mã hóa khóa dữ liệu trong khóa KMS, hãy sử dụng lệnh ghép ngắn Invoke-KMSEncrypt. Nó trả về bản mã dưới dạng

# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
1 (Hệ thống. IO. đối tượng MemoryStream). Bạn có thể sử dụng đối tượng
# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
1 làm đầu vào cho lệnh ghép ngắn Invoke-KMSDecrypt

AWS KMS cũng trả về khóa dữ liệu dưới dạng đối tượng

# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
1. Trong ví dụ này, để mô phỏng khóa dữ liệu văn bản gốc, chúng tôi tạo một mảng byte và ghi nó vào đối tượng
# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
1

Lưu ý rằng tham số

# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
5 của
# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
6 lấy một mảng byte (
# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
7); . Bắt đầu từ AWSPowerShell phiên bản 4. 0, tham số trong tất cả các mô-đun AWSPowerShell nhận mảng byte và đối tượng
# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
1 chấp nhận mảng byte, đối tượng
# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
1, chuỗi, mảng chuỗi và
# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00"

response = kmsClient.encrypt({
  key_id: key_id,
  plaintext: plaintext
})

ciphertext = response.ciphertext_blob
1 (Hệ thống. IO. FileInfo) đối tượng. Bạn có thể chuyển bất kỳ loại nào trong số này cho
# Encrypt a data key

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'
plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt(
    KeyId=key_id,
    Plaintext=plaintext
)

ciphertext = response['CiphertextBlob']
6

// Encrypt a data key
//
// Replace the following example key ARN with any valid key identfier
String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";
MemoryStream plaintext = new MemoryStream();
plaintext.Write(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }, 0, 10);

EncryptRequest encryptRequest = new EncryptRequest()
{
    KeyId = keyId,
    Plaintext = plaintext
};
MemoryStream ciphertext = kmsClient.Encrypt(encryptRequest).CiphertextBlob;
8

Để sử dụng lệnh ghép ngắn AWS KMS PowerShell, hãy cài đặt AWS. Công cụ. Mô-đun dịch vụ quản lý khóa. Để biết thêm thông tin, hãy xem Hướng dẫn sử dụng Công cụ AWS dành cho Windows PowerShell

Làm cách nào để kiểm tra chuỗi có được mã hóa hay không trong PHP?

Để kiểm tra xem nó có được mã hóa hay không bạn cần khóa đã mã hóa giá trị . Nếu bạn không có khóa, bạn có thể thử kiểm tra một chữ ký ngôn ngữ nhất định (số lần xuất hiện trong chuỗi ký tự nhất định). Loại mã hóa sẽ khá khó phát hiện.

Làm cách nào để giải mã chuỗi trong PHP?

Bạn có thể sử dụng openssl_decrypt() để giải mã dữ liệu trong PHP. Khi thành công, nó trả về chuỗi được giải mã. Nếu không, nó trả về FALSE.

Làm cách nào để mã hóa và giải mã văn bản trong PHP?

Trong ngôn ngữ lập trình PHP, Mã hóa cũng như Giải mã dữ liệu chuỗi được thực hiện bằng chức năng OpenSSL . Tại đây, chúng ta có thể mã hóa và giải mã giá trị thông qua openssl_encrypt(data) và openssl_decrypt(data) tương ứng.

Làm cách nào để mã hóa và giải mã giá trị trong PHP?

Bạn có thể làm một cái gì đó như. $string_to_encrypt="Kiểm tra"; . Điều này sử dụng chế độ ECB, không an toàn