# RSACryptoManager
RSAEncryptionHandler là một module Python cho phép thực hiện các thao tác mã hóa và giải mã bằng RSA. Module này sử dụng thư viện `cryptography` để cung cấp các chức năng chính bao gồm mã hóa, giải mã, tạo khóa RSA, ký và xác minh chữ ký số.
### Author: Anhdev99
### Website: https://anhdev99.com
## Cài đặt
Trước khi sử dụng module, bạn cần cài đặt thư viện `cryptography`:
```bash
pip install cryptography
```
## Sử dụng
### 1. Tạo một đối tượng RSACryptoManager
```python
from rsa_crypto_manager import RSACryptoManager
crypto = RSACryptoManager()
```
### 2. Tạo cặp khóa RSA
```python
public_key, private_key = crypto.gen_rsa_key(key_size=2048)
```
### 3. Mã hóa dữ liệu
```python
data_to_encrypt = "Hello, World!"
encrypted_data = crypto.encrypt(data_to_encrypt, public_key)
print(f"Encrypted Data: {encrypted_data}")
```
### 4. Giải mã dữ liệu
```python
decrypted_data = crypto.decrypt(encrypted_data, private_key)
print(f"Decrypted Data: {decrypted_data}")
```
### 5. Ký dữ liệu
```python
data_to_sign = "Important message"
signature = crypto.sign(data_to_sign, private_key)
print(f"Signature: {signature}")
```
### 6. Xác minh chữ ký
```python
is_valid = crypto.verify(data_to_sign, signature, public_key)
print(f"Signature valid: {is_valid}")
```
## Các hàm trong module
### `gen_rsa_key(key_size: int) -> [str, str]`
Tạo một cặp khóa RSA.
- `key_size`: Kích thước của khóa (ví dụ: 2048).
- Trả về: Một danh sách chứa khóa công khai và khóa riêng tư dưới dạng chuỗi đã mã hóa Base64.
### `encrypt(data_to_encrypt: str, pub_cer: str) -> str`
Mã hóa dữ liệu bằng khóa công khai.
- `data_to_encrypt`: Dữ liệu cần mã hóa.
- `pub_cer`: Khóa công khai dưới dạng chuỗi Base64.
- Trả về: Dữ liệu đã mã hóa dưới dạng chuỗi Base64.
### `decrypt(data_encrypted: str, priv_key_pem: str) -> str`
Giải mã dữ liệu bằng khóa riêng tư.
- `data_encrypted`: Dữ liệu đã mã hóa dưới dạng chuỗi Base64.
- `priv_key_pem`: Khóa riêng tư dưới dạng chuỗi Base64.
- Trả về: Dữ liệu đã giải mã dưới dạng chuỗi.
### `sign(data_to_sign: str, private_key: str, is_file: bool = False) -> str`
Ký dữ liệu bằng khóa riêng tư.
- `data_to_sign`: Dữ liệu cần ký.
- `private_key`: Khóa riêng tư dưới dạng chuỗi Base64.
- `is_file`: (Tùy chọn) Chỉ định nếu `private_key` là đường dẫn tới file chứa khóa.
- Trả về: Chữ ký số dưới dạng chuỗi Base64.
### `verify(data_to_verify: str, signed_data: str, pub_cer: str, is_file: bool = False) -> bool`
Xác minh chữ ký số bằng khóa công khai.
- `data_to_verify`: Dữ liệu cần xác minh.
- `signed_data`: Chữ ký số dưới dạng chuỗi Base64.
- `pub_cer`: Khóa công khai dưới dạng chuỗi Base64.
- `is_file`: (Tùy chọn) Chỉ định nếu `pub_cer` là đường dẫn tới file chứa khóa.
- Trả về: `True` nếu chữ ký hợp lệ, `False` nếu không hợp lệ.
Raw data
{
"_id": null,
"home_page": null,
"name": "rsa-crypto-manager",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "python, rsa, crypto",
"author": "Anhdev99 (Steven Nguyen)",
"author_email": "anhdev99@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/3f/e1/3f8addbe8ef4411ab595b7fcc702ab83b71b48abeafc7f8dd16e3fe69690/rsa-crypto-manager-0.0.1.tar.gz",
"platform": null,
"description": "\n# RSACryptoManager\nRSAEncryptionHandler l\u00e0 m\u1ed9t module Python cho ph\u00e9p th\u1ef1c hi\u1ec7n c\u00e1c thao t\u00e1c m\u00e3 h\u00f3a v\u00e0 gi\u1ea3i m\u00e3 b\u1eb1ng RSA. Module n\u00e0y s\u1eed d\u1ee5ng th\u01b0 vi\u1ec7n `cryptography` \u0111\u1ec3 cung c\u1ea5p c\u00e1c ch\u1ee9c n\u0103ng ch\u00ednh bao g\u1ed3m m\u00e3 h\u00f3a, gi\u1ea3i m\u00e3, t\u1ea1o kh\u00f3a RSA, k\u00fd v\u00e0 x\u00e1c minh ch\u1eef k\u00fd s\u1ed1.\n\n### Author: Anhdev99\n\n### Website: https://anhdev99.com\n\n\n## C\u00e0i \u0111\u1eb7t\n\nTr\u01b0\u1edbc khi s\u1eed d\u1ee5ng module, b\u1ea1n c\u1ea7n c\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n `cryptography`:\n\n```bash\npip install cryptography\n```\n\n## S\u1eed d\u1ee5ng\n\n### 1. T\u1ea1o m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng RSACryptoManager\n\n```python\nfrom rsa_crypto_manager import RSACryptoManager\n\ncrypto = RSACryptoManager()\n```\n\n### 2. T\u1ea1o c\u1eb7p kh\u00f3a RSA\n\n```python\npublic_key, private_key = crypto.gen_rsa_key(key_size=2048)\n```\n\n\n### 3. M\u00e3 h\u00f3a d\u1eef li\u1ec7u\n```python\ndata_to_encrypt = \"Hello, World!\"\nencrypted_data = crypto.encrypt(data_to_encrypt, public_key)\nprint(f\"Encrypted Data: {encrypted_data}\")\n```\n\n### 4. Gi\u1ea3i m\u00e3 d\u1eef li\u1ec7u\n```python\ndecrypted_data = crypto.decrypt(encrypted_data, private_key)\nprint(f\"Decrypted Data: {decrypted_data}\")\n```\n\n### 5. K\u00fd d\u1eef li\u1ec7u\n```python\ndata_to_sign = \"Important message\"\nsignature = crypto.sign(data_to_sign, private_key)\nprint(f\"Signature: {signature}\")\n```\n\n### 6. X\u00e1c minh ch\u1eef k\u00fd\n```python\nis_valid = crypto.verify(data_to_sign, signature, public_key)\nprint(f\"Signature valid: {is_valid}\")\n```\n\n## C\u00e1c h\u00e0m trong module\n\n### `gen_rsa_key(key_size: int) -> [str, str]`\n\nT\u1ea1o m\u1ed9t c\u1eb7p kh\u00f3a RSA.\n\n- `key_size`: K\u00edch th\u01b0\u1edbc c\u1ee7a kh\u00f3a (v\u00ed d\u1ee5: 2048).\n- Tr\u1ea3 v\u1ec1: M\u1ed9t danh s\u00e1ch ch\u1ee9a kh\u00f3a c\u00f4ng khai v\u00e0 kh\u00f3a ri\u00eang t\u01b0 d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i \u0111\u00e3 m\u00e3 h\u00f3a Base64.\n\n### `encrypt(data_to_encrypt: str, pub_cer: str) -> str`\n\nM\u00e3 h\u00f3a d\u1eef li\u1ec7u b\u1eb1ng kh\u00f3a c\u00f4ng khai.\n\n- `data_to_encrypt`: D\u1eef li\u1ec7u c\u1ea7n m\u00e3 h\u00f3a.\n- `pub_cer`: Kh\u00f3a c\u00f4ng khai d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i Base64.\n- Tr\u1ea3 v\u1ec1: D\u1eef li\u1ec7u \u0111\u00e3 m\u00e3 h\u00f3a d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i Base64.\n\n### `decrypt(data_encrypted: str, priv_key_pem: str) -> str`\n\nGi\u1ea3i m\u00e3 d\u1eef li\u1ec7u b\u1eb1ng kh\u00f3a ri\u00eang t\u01b0.\n\n- `data_encrypted`: D\u1eef li\u1ec7u \u0111\u00e3 m\u00e3 h\u00f3a d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i Base64.\n- `priv_key_pem`: Kh\u00f3a ri\u00eang t\u01b0 d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i Base64.\n- Tr\u1ea3 v\u1ec1: D\u1eef li\u1ec7u \u0111\u00e3 gi\u1ea3i m\u00e3 d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i.\n\n### `sign(data_to_sign: str, private_key: str, is_file: bool = False) -> str`\n\nK\u00fd d\u1eef li\u1ec7u b\u1eb1ng kh\u00f3a ri\u00eang t\u01b0.\n\n- `data_to_sign`: D\u1eef li\u1ec7u c\u1ea7n k\u00fd.\n- `private_key`: Kh\u00f3a ri\u00eang t\u01b0 d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i Base64.\n- `is_file`: (T\u00f9y ch\u1ecdn) Ch\u1ec9 \u0111\u1ecbnh n\u1ebfu `private_key` l\u00e0 \u0111\u01b0\u1eddng d\u1eabn t\u1edbi file ch\u1ee9a kh\u00f3a.\n- Tr\u1ea3 v\u1ec1: Ch\u1eef k\u00fd s\u1ed1 d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i Base64.\n\n### `verify(data_to_verify: str, signed_data: str, pub_cer: str, is_file: bool = False) -> bool`\n\nX\u00e1c minh ch\u1eef k\u00fd s\u1ed1 b\u1eb1ng kh\u00f3a c\u00f4ng khai.\n\n- `data_to_verify`: D\u1eef li\u1ec7u c\u1ea7n x\u00e1c minh.\n- `signed_data`: Ch\u1eef k\u00fd s\u1ed1 d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i Base64.\n- `pub_cer`: Kh\u00f3a c\u00f4ng khai d\u01b0\u1edbi d\u1ea1ng chu\u1ed7i Base64.\n- `is_file`: (T\u00f9y ch\u1ecdn) Ch\u1ec9 \u0111\u1ecbnh n\u1ebfu `pub_cer` l\u00e0 \u0111\u01b0\u1eddng d\u1eabn t\u1edbi file ch\u1ee9a kh\u00f3a.\n- Tr\u1ea3 v\u1ec1: `True` n\u1ebfu ch\u1eef k\u00fd h\u1ee3p l\u1ec7, `False` n\u1ebfu kh\u00f4ng h\u1ee3p l\u1ec7.\n\n",
"bugtrack_url": null,
"license": null,
"summary": "RSA cryptography library",
"version": "0.0.1",
"project_urls": null,
"split_keywords": [
"python",
" rsa",
" crypto"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c0460c51bc7e63c51963730fb7781ce1bce709de711c2dd6bcbe422f147275cf",
"md5": "6366cb90c51c43d6a570f7038fd49eb8",
"sha256": "366b5b10955c337a5197e0fb07f74863d60b542143c8ff9fff433190ef33134f"
},
"downloads": -1,
"filename": "rsa_crypto_manager-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6366cb90c51c43d6a570f7038fd49eb8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5445,
"upload_time": "2024-07-24T02:54:17",
"upload_time_iso_8601": "2024-07-24T02:54:17.972122Z",
"url": "https://files.pythonhosted.org/packages/c0/46/0c51bc7e63c51963730fb7781ce1bce709de711c2dd6bcbe422f147275cf/rsa_crypto_manager-0.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3fe13f8addbe8ef4411ab595b7fcc702ab83b71b48abeafc7f8dd16e3fe69690",
"md5": "cbddddda977a689edf01209ff94f3573",
"sha256": "e3680273740f5a888b50937a9be57f04b7c8607f4e7d1e952755eadfec1fa378"
},
"downloads": -1,
"filename": "rsa-crypto-manager-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "cbddddda977a689edf01209ff94f3573",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5089,
"upload_time": "2024-07-24T02:54:19",
"upload_time_iso_8601": "2024-07-24T02:54:19.262884Z",
"url": "https://files.pythonhosted.org/packages/3f/e1/3f8addbe8ef4411ab595b7fcc702ab83b71b48abeafc7f8dd16e3fe69690/rsa-crypto-manager-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-24 02:54:19",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "rsa-crypto-manager"
}