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ã

setPassword($password );
		$keys=$rsa->createKey(2048);		
		myRSA::$privateKey=$keys['privatekey'];
		myRSA::$publicKey=$keys['publickey'];
		myRSA::$keyPhrase=$password;
	}

	public static function encryptText($text)
	{
		$rsa = new Crypt_RSA();
		$rsa->loadKey(myRSA::$publicKey);
		$encryptedText = $rsa->encrypt($text);
		return $encryptedText;
	}

	public static function decryptText($encryText)
	{
		$rsa = new Crypt_RSA();
		$rsa->setPassword(myRSA::$keyPhrase);
		$rsa->loadKey(myRSA::$privateKey);
		$plaintext = $rsa->decrypt($encryText);
		return $plaintext;
	}
}
?>



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

Mã hóa và giải mã RSA trong ví dụ PHP
Giải thưởng đổi mới
Mã hóa và giải mã RSA trong ví dụ PHP

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


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

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?

RSA mã hóa và giải mã như thế nào?

Người dùng RSA tạo và xuất bản khóa công khai dựa trên hai số nguyên tố lớn, cùng với một giá trị phụ. Các số nguyên tố được giữ bí mật. Tin nhắn có thể được mã hóa bởi bất kỳ ai, thông qua khóa chung, nhưng chỉ có thể được giải mã bởi người biết số nguyên tố .

mã hóa và giải mã với ví dụ là gì?

Mã hóa là quá trình chuyển đổi một tin nhắn có thể đọc được thành dạng không thể đọc được để ngăn các bên trái phép đọc nó. Giải mã là quá trình chuyển đổi một tin nhắn được mã hóa trở lại định dạng ban đầu (có thể đọc được). Tin nhắn ban đầu được gọi là tin nhắn văn bản gốc

Giải thích mật mã RSA bằng ví dụ là gì?

RSA là một loại mã hóa bất đối xứng, sử dụng hai khóa khác nhau nhưng được liên kết với nhau . Trong mật mã RSA, cả khóa công khai và khóa riêng đều có thể mã hóa tin nhắn. Khóa đối diện với khóa được sử dụng để mã hóa tin nhắn được sử dụng để giải mã nó.