Chữ ký số ví dụ php

Mục tiêu chính của mô-đun Chữ ký số của phpdocx là cung cấp phương tiện để ký điện tử các tài liệu MS Office [DOCX, XLSX, PPTX] và PDF trong máy chủ web chỉ cần PHP

Việc giải thích chi tiết chữ ký điện tử là gì nằm ngoài phạm vi của phần giới thiệu này [hãy xem bài viết Wikipedia này để biết thêm thông tin chi tiết]. Nói một cách ngắn gọn, đó là một cách để chứng minh "tính xác thực và tính toàn vẹn của tài liệu". bạn có thể chắc chắn rằng tài liệu được ký điện tử đã được tạo bởi người nói như vậy và tài liệu đó không bị thay đổi sau đó

Để ký điện tử một tài liệu trong máy chủ web, bạn cần có Chứng chỉ kỹ thuật số được cấp bởi Cơ quan cấp chứng chỉ được công nhận hoặc viết tắt là CA [bạn có thể tạo chứng chỉ của riêng mình để kiểm tra nhưng không nên sử dụng chúng trừ khi bạn định phân phối tài liệu của mình

Mô-đun Chữ ký số cũng cho phép ký PDF có thể đã được tạo bằng phpdocx hoặc cách khác

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
1

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
2

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
3

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
4

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
5

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
6

Thư viện này được tạo để ký dữ liệu tùy ý và toàn bộ tài liệu XML bằng chữ ký số XML theo khuyến nghị của W3 bằng PHP. Mã cho lớp này được lấy cảm hứng từ thư viện xmlseclibs, thư viện mà tôi thấy không thể làm việc được do thiếu tài liệu và thực tế là các tài liệu đã ký mà nó tạo ra không hợp lệ

Nếu lớp này tạo ra các tài liệu không hợp lệ [vì có nhiều thông số kỹ thuật khác nhau cho các chữ ký này, trong đó tôi chỉ kiểm tra một số ít], vui lòng liên hệ với tôi và tôi sẽ cố gắng hết sức để cung cấp hỗ trợ cho nhu cầu của bạn

Cài đặt

sử dụng nhà soạn nhạc

php composer.phar require "marcelxyz/php-xml-digital-signature"

Hoặc yêu cầu tệp

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
7 trong dự án của bạn

ví dụ

Dưới đây là tổng quan cơ bản về cách sử dụng thư viện này

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];

Vui lòng xem thư mục

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
8 để biết thêm các ví dụ chi tiết

tài liệu API

Để ký một tài liệu XML, bạn cần trả lời các câu hỏi sau

  1. Thuật toán chữ ký nào [RSA/DSA/ECDSA, v.v. ] bạn sẽ sử dụng chứ?
  2. Bạn sẽ sử dụng phương pháp phân loại [băm] nào?
  3. Bạn sẽ sử dụng phương pháp C14N [chuẩn hóa] nào?
  4. Bạn có muốn bao gồm thông tin khóa công khai trong tài liệu XML thu được không?

Chúng được đề cập trong các tiểu mục sau

Cấu hình

Thuật toán chữ ký

Các thuật toán chữ ký sau hiện đang được hỗ trợ

  • DSA [
    $dsig = new XmlDsig\XmlDigitalSignature[];
    
    $dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
    $dsig->loadPublicKey['path/to/public/key'];
    
    $dsig->addObject['I am a data blob.'];
    $dsig->sign[];
    
    $result = $dsig->getSignedDocument[];
    9]
  • RSA [
    $dsig = new XmlDsig\XmlDigitalSignature[];
    
    $dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
    $dsig->loadPublicKey['path/to/public/key'];
    
    $dsig->addObject['I am a data blob.'];
    $dsig->sign[];
    
    $result = $dsig->getSignedDocument[];
    0]
  • Đường cong elip DSA [______51]
  • HMAC [
    $dsig = new XmlDsig\XmlDigitalSignature[];
    
    $dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
    $dsig->loadPublicKey['path/to/public/key'];
    
    $dsig->addObject['I am a data blob.'];
    $dsig->sign[];
    
    $result = $dsig->getSignedDocument[];
    0]

Chỉ định cái thích hợp bằng cách sử dụng phương pháp

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
1 với hằng số
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
2 thích hợp

Mặc định. RSA

phương pháp tiêu hóa

Thư viện này hiện hỗ trợ bốn phương thức phân loại, đó là

  • SHA1 [
    $dsig = new XmlDsig\XmlDigitalSignature[];
    
    $dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
    $dsig->loadPublicKey['path/to/public/key'];
    
    $dsig->addObject['I am a data blob.'];
    $dsig->sign[];
    
    $result = $dsig->getSignedDocument[];
    3]
  • SHA256 [
    $dsig = new XmlDsig\XmlDigitalSignature[];
    
    $dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
    $dsig->loadPublicKey['path/to/public/key'];
    
    $dsig->addObject['I am a data blob.'];
    $dsig->sign[];
    
    $result = $dsig->getSignedDocument[];
    4]
  • SHA512 [
    $dsig = new XmlDsig\XmlDigitalSignature[];
    
    $dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
    $dsig->loadPublicKey['path/to/public/key'];
    
    $dsig->addObject['I am a data blob.'];
    $dsig->sign[];
    
    $result = $dsig->getSignedDocument[];
    5]
  • RIPMED-160 [______16]

Phiên bản PHP của bạn phải cung cấp hỗ trợ cho phương pháp thông báo mà bạn chọn. Thư viện này sẽ tự động kiểm tra, nhưng bạn cũng có thể tự làm việc này bằng cách gọi hàm hash_algos[] của PHP

Chỉ định thông báo thích hợp bằng cách gọi phương thức

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
7 với hằng số
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
8 thích hợp

Để thêm hỗ trợ cho một phương pháp băm khác [miễn là phiên bản PHP của bạn hỗ trợ phương pháp này], hãy thêm một const

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
8 mới với giá trị được xác định trong
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
20. Hãy nhớ thêm các giá trị ánh xạ phù hợp vào các thuộc tính lớp sau.
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
21,
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
22,
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
23 [đọc ghi chú
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
24 trong phần bình luận của những tài sản này để biết thêm thông tin]

Mặc định. SHA1

phương pháp C14N

Thư viện này hiện hỗ trợ các phương pháp chuẩn hóa sau

  • Canonical XML [
    $dsig = new XmlDsig\XmlDigitalSignature[];
    
    $dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
    $dsig->loadPublicKey['path/to/public/key'];
    
    $dsig->addObject['I am a data blob.'];
    $dsig->sign[];
    
    $result = $dsig->getSignedDocument[];
    25]
  • Canonical XML có nhận xét [
    $dsig = new XmlDsig\XmlDigitalSignature[];
    
    $dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
    $dsig->loadPublicKey['path/to/public/key'];
    
    $dsig->addObject['I am a data blob.'];
    $dsig->sign[];
    
    $result = $dsig->getSignedDocument[];
    26]
  • XML chính tắc độc quyền [
    $dsig = new XmlDsig\XmlDigitalSignature[];
    
    $dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
    $dsig->loadPublicKey['path/to/public/key'];
    
    $dsig->addObject['I am a data blob.'];
    $dsig->sign[];
    
    $result = $dsig->getSignedDocument[];
    27]
  • XML chính tắc độc quyền có nhận xét [
    $dsig = new XmlDsig\XmlDigitalSignature[];
    
    $dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
    $dsig->loadPublicKey['path/to/public/key'];
    
    $dsig->addObject['I am a data blob.'];
    $dsig->sign[];
    
    $result = $dsig->getSignedDocument[];
    28]

Chúng có thể được mở rộng bằng cách thêm các hằng số lớp cần thiết. Nếu bạn thêm một phương thức C14N mới, hãy nhớ thêm các tùy chọn cụ thể của nó vào mảng

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
29

Để chỉ định một phương thức C14N khác, hãy gọi phương thức

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
20 với hằng số
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
21 thích hợp

Mặc định. XML chính tắc

XML độc lập

Để buộc XML kết quả chứa thuộc tính giả độc lập được đặt thành

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
22, chỉ cần gọi phương thức
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
23

Mặc định.

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
24

Tiền tố không gian tên nút

Để chỉ định một tiền tố ns khác [hoặc bạn hoàn toàn không muốn sử dụng tiền tố này], chỉ cần chuyển giá trị thích hợp cho phương thức

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
25

Mặc định.

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
26

Tạo khóa công khai/riêng tư

Bỏ qua phần này và đi đến phần sử dụng nếu các cặp khóa của bạn đã được tạo

Có nhiều cách để tạo một cặp khóa, tuy nhiên bên dưới là các ví dụ về cách tạo khóa RSA bằng OpenSSL [thiết bị đầu cuối unix]

Khóa RSA riêng

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
2

Lệnh trên sẽ tạo khóa AES256 RSA riêng với mô-đun 2048. Đặt cụm mật khẩu rất được khuyến khích

Khóa công khai [định dạng PEM]

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
2

Lệnh trên tạo chứng chỉ công khai ở định dạng PEM, dựa trên khóa riêng được tạo trước đó [hoặc đã tồn tại]

Khóa công khai [X. định dạng 509]

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
1

Lệnh trên tạo ra một X công khai. Giấy chứng nhận 509 có giá trị trong 3650 ngày. Bạn cũng sẽ được nhắc cung cấp một số thông tin nhỏ cần thiết để tạo chứng chỉ này [CSR]. Khóa kết quả còn được gọi là chứng chỉ tự ký

Khóa công khai [định dạng XML]

Nếu bạn cần đính kèm khóa công khai vào tài liệu XML đã ký ở định dạng XML, trước tiên bạn sẽ phải tạo chứng chỉ công khai [bằng PEM hoặc X. định dạng 509]. Khi bạn đã hoàn thành việc này, bạn có thể chuyển đổi khóa của mình sang định dạng XML

RSA công khai X. Chứng chỉ 509 có thể được chuyển đổi sang định dạng XML bằng cách sử dụng http. //công cụ. ailon. tổ chức/công cụ/XmlKey

Mặt khác, chứng chỉ PEM RSA công khai có thể được chuyển đổi sang định dạng XML bằng cách sử dụng https. //siêu khô. apphb. com/tools/online-rsa-key-converter

Cách sử dụng

Khi bạn đã tạo khóa và định cấu hình môi trường thì bạn đã sẵn sàng để bắt đầu tải khóa và thêm đối tượng. Các phương pháp được giải thích dưới đây

Đang tải các khóa đã tạo

Khi bạn đã tạo các khóa riêng tư, công khai và XML phù hợp [nếu cần], bạn có thể tải chúng bằng các phương thức

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
27,
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
28,
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
29 tương ứng

Thêm đối tượng

Dữ liệu đối tượng [chuỗi hoặc DOMNodes] có thể được thêm vào tài liệu XML bằng phương pháp

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
10. Nếu giá trị của đối tượng cần được băm, hãy đảm bảo chuyển
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
11 làm tham số thứ ba của phương thức đã nói ở trên

Dữ liệu kết quả sẽ được đặt bên trong nút

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
12 và một bộ phần tử
$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
13 thích hợp sẽ được tạo, chứa thông tin tóm tắt về đối tượng

Ký tài liệu

Bây giờ điều có vẻ tầm thường, bạn ký vào tài liệu XML đã tạo bằng cách sử dụng phương pháp

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
14. Tất nhiên, hãy chắc chắn để ý các giá trị trả về của phương thức và bất kỳ ngoại lệ nào mà nó có thể đưa ra

Xác minh chữ ký

Đổi lại, chữ ký có thể được xác minh bằng phương pháp

$dsig = new XmlDsig\XmlDigitalSignature[];

$dsig->loadPrivateKey['path/to/private/key', 'passphrase'];
$dsig->loadPublicKey['path/to/public/key'];

$dsig->addObject['I am a data blob.'];
$dsig->sign[];

$result = $dsig->getSignedDocument[];
15

Ngoài ra, bạn có thể sử dụng trình xác thực Aleksey để kiểm tra dsig. Tuy nhiên, hãy lưu ý rằng trình xác thực này bị lỗi. cụ thể là

Làm cách nào để tạo chữ ký số bằng PHP?

Thư viện chữ ký số PHP PDF .
Tạo chữ ký điện tử — Ký điện tử bằng cách sử dụng khóa riêng
Xác thực chữ ký điện tử — Xác minh chứng chỉ và chữ ký
Chữ ký điện tử — Thêm chữ ký điện tử được vẽ, quét hoặc đánh máy
Lưu trữ chữ ký — Lưu trữ cục bộ hoặc từ xa để sử dụng lại trong tương lai

Làm cách nào để xác minh chữ ký số trong PHP?

Hàm openssl_verify[] là một hàm sẵn có trong PHP được sử dụng để xác minh xem chữ ký có đúng với dữ liệu đã chỉ định hay không bằng cách sử dụng . Đây phải là khóa chung tương ứng với khóa riêng được sử dụng để ký.

Chữ ký số là gì đưa ra ví dụ nào?

Ví dụ phổ biến nhất là chữ ký ướt được quét bởi thiết bị điện tử rồi chèn vào tài liệu . Một ví dụ khác về chữ ký điện tử đơn giản là chữ ký email mà chúng ta thường thêm vào cuối email và đánh dấu vào ô điều khoản và điều kiện trong quá trình cài đặt phần mềm.

Làm cách nào để lưu trữ chữ ký trong cơ sở dữ liệu trong PHP?

mã php.

Chủ Đề