Mã hóa và giải mã RSA trong ví dụ PHP

Bảo mật là một trong những vấn đề được cân nhắc nhiều nhất trong quy trình phát triển ứng dụng/trang web hiện tại, tôi chắc rằng bạn đã dành rất nhiều thời gian để viết mã để xử lý mã hóa trong ứng dụng của mình

Trong bài viết này, tôi đang cố gắng trình bày một trong những cách yêu thích của mình để giải quyết vấn đề này, xử lý mã hóa/giải mã RSA trong quá trình phát triển PHP của bạn.

Điều này khá đơn giản vì tôi đang sử dụng gói PHPSecLib. Tôi đã sử dụng thư viện openSSL cho PHP trong vài năm và gần đây đã bắt đầu xử lý gói này. Đó là một triển khai khá thú vị nên tôi bắt đầu yêu thích nó

Trước hết, bạn cần tải gói này, có sẵn để tải xuống[1] và đi kèm với giấy phép MIT[2], tương thích với GPL[3]

Nếu ý định của bạn là chỉ sử dụng PHPSecLib để mã hóa và giải mã RSA, tôi khuyên bạn chỉ nên bao gồm hai thư mục là Crypt và Math trong môi trường sản xuất của mình

Bước đầu tiên đối với mã hóa RSA là tạo khóa công khai và khóa riêng. Lưu ý rằng tôi đã bảo mật các khóa bằng cụm mật khẩu

$rsa = new Crypt_RSA[];
$rsa->setPassword['pa$$wrd5'];
$keys=$rsa->createKey[1024];

echo $keys['privatekey'];
echo $keys['publickey'];

Mã là tự giải thích. phương thức createKey[] đang lấy giá trị bit của khóa và xuất ra một mảng chứa khóa Riêng tư và Khóa chung. setPassword[] là tùy chọn, bạn có thể bỏ qua nếu không muốn tạo khóa bằng cụm mật khẩu. Nếu bạn muốn sử dụng khóa 2048 bit thì hãy cung cấp 2048 làm đối số trong createKey[] thay vì 1024

Khi các khóa đã sẵn sàng, bạn có thể bắt đầu mã hóa. Tôi đang sử dụng khóa công khai. Cụm mật khẩu không bắt buộc khi mã hóa

$rsa->loadKey[$keys['publickey']];
$plaintext = 'Text to be transmitted securely !!!';
$ciphertext = $rsa->encrypt[$plaintext];
echo $ciphertext;

Quá trình giải mã diễn ra như sau [sử dụng khóa riêng tư], lưu ý rằng cụm mật khẩu là bắt buộc

$rsa->loadKey[$keys['privatekey']];
$rsa->setPassword['pa$$wrd5'];
$re_plaintText =  $rsa->decrypt[$ciphertext];
echo $re_plaintText;

Tôi đã viết một lớp tĩnh để chứng minh cách mã hóa có thể được thực hiện. Vui lòng đánh dấu vào những điều sau

*** KHÔNG sử dụng mã này trong môi trường sản xuất của bạn vì mã thiếu nhiều biện pháp bảo mật và tinh chỉnh ***

Điều này chỉ để minh họa cách PHPSecLib có thể được sử dụng trong mã




Tài liệu API PHPSecLib có sẵn tại đây. [4] Một tài liệu tham khảo hữu ích để kiểm tra khi bạn gặp khó khăn hoặc cần thêm thông tin về các phương pháp

Lớp và cũng mã hóa dữ liệu bằng một tệp khóa chung nhất định và giải mã dữ liệu bằng một tệp khóa riêng nhất định

Giải thưởng đổi mới

Người được đề cử. 6x


Lớp này có thể RSA tạo khóa và mã hóa dữ liệu bằng OpenSSL

Nó có thể tạo các khóa RSA công khai và riêng tư có độ dài nhất định khi gọi chương trình openssl

Lớp và cũng mã hóa dữ liệu bằng một tệp khóa chung nhất định và giải mã dữ liệu bằng một tệp khóa riêng nhất định

Thêm thông tin

Yêu cầu

Cài đặt

1] Cài đặt trình soạn nhạc

2] Theo dõi trong thư mục dự án

composer require dmamontov/rsacrypt ~1.0.2

Trong cấu hình composer.json, dự án của bạn sẽ được thêm vào thư viện dmamontov/rsacrypt, người đã giải quyết trong thư mục vendor/. Trong trường hợp không có tệp cấu hình hoặc thư mục với nhà cung cấp, chúng sẽ được tạo

Nếu trước khi dự án của bạn không được sử dụng composer, hãy kết nối các nhà cung cấp tệp khởi động. Để làm điều này, hãy nhập mã vào dự án

Làm cách nào để sử dụng mã hóa RSA trong PHP?

Chủ Đề