用于 Couchbase Python SDK 的 JSON 加密 API
项目描述
# Couchbase Python
加密 用于 Couchbase 服务器的 Python 加密
## AES-256-HMAC-SHA256
AES256CryptoProvider 是一个对称加密提供程序,用于与 Couchbase 服务器一起加密 JSON 文档中的字段。提供者需要一个密钥库和用于签名/验证的私钥的名称。创建提供程序后,需要在存储桶中注册它,然后对 encrypt_document 和 decrypt_document 的任何调用都将使用该提供程序。
提供者可以这样使用:
```python
from cbencryption import AES256CryptoProvider
# 创建不安全的密钥库并注册公钥和私钥
keystore = InMemoryKeyStore()
keystore.set_key('mypublickey', '!mysecretkey#9^5usdk39d&dlf)03sL')
keystore.set_key('myprivatekey', 'myauthpassword')
# 创建和注册提供者
provider = AES256CryptoProvider(keystore, 'mypublickey', 'myprivatekey')
bucket.register_crypto_provider('AES-256-HMAC-SHA256', provider)
# 加密文档,alg 名称必须与提供者名称匹配,并且 child 必须匹配 keystore 中的密钥
prefix = '__crypt_'
document = {'message': '老灰鹅跳过了破门。'}
encrypted_document = bucket.encrypt_document(document,
[{'alg': 'AES-256-HMAC-SHA256', 'name': 'message'}],
prefix)
# 使用注册的提供者解密文档
decrypted_document = bucket.decrypt_document(encrypted, prefix)
```
输出 JSON 如下所示,可以存储在 Couchbase 中:
```json
{
"__crypt_message": {
"alg": "AES-256-HMAC-SHA256" ,
"ciphertext": "sR6AFEIGWS5Fy9QObNOhbCgfg3vXH4NHVRK1qkhKLQqjkByg2n69lot89qFEJuBsVNTXR77PZR6RjN4h4M9evg==",
"sig": "rT89aCj1WosYjWHHu0mf92S195vYnEGA/reDnYelQsM=",
"iv": "Cfq84/46Qjet3EEQ1HUwSg=="
}
}
```
## Keystore
The key store is a managed way to retrieve加密/解密过程中使用的密钥和以下方法是必需的:
```python
def get_key(key_id):
"""
将密钥作为字节数组返回
"""
return b'my-secret-key'
```
### JavaKeystore
密钥库是一种托管方式,用于检索使用 JCEKS 密钥库的加密/解密期间使用的密钥。使用JavaKeyStore 如下:
```python
from cbencryption import JavaKeyStore
# 使用密钥库文件的路径及其密码创建密钥库
keystore = JavaKeyStore('path/to/keystore.jceks', 'keystore_passphrase')
```
加密 用于 Couchbase 服务器的 Python 加密
## AES-256-HMAC-SHA256
AES256CryptoProvider 是一个对称加密提供程序,用于与 Couchbase 服务器一起加密 JSON 文档中的字段。提供者需要一个密钥库和用于签名/验证的私钥的名称。创建提供程序后,需要在存储桶中注册它,然后对 encrypt_document 和 decrypt_document 的任何调用都将使用该提供程序。
提供者可以这样使用:
```python
from cbencryption import AES256CryptoProvider
# 创建不安全的密钥库并注册公钥和私钥
keystore = InMemoryKeyStore()
keystore.set_key('mypublickey', '!mysecretkey#9^5usdk39d&dlf)03sL')
keystore.set_key('myprivatekey', 'myauthpassword')
# 创建和注册提供者
provider = AES256CryptoProvider(keystore, 'mypublickey', 'myprivatekey')
bucket.register_crypto_provider('AES-256-HMAC-SHA256', provider)
# 加密文档,alg 名称必须与提供者名称匹配,并且 child 必须匹配 keystore 中的密钥
prefix = '__crypt_'
document = {'message': '老灰鹅跳过了破门。'}
encrypted_document = bucket.encrypt_document(document,
[{'alg': 'AES-256-HMAC-SHA256', 'name': 'message'}],
prefix)
# 使用注册的提供者解密文档
decrypted_document = bucket.decrypt_document(encrypted, prefix)
```
输出 JSON 如下所示,可以存储在 Couchbase 中:
```json
{
"__crypt_message": {
"alg": "AES-256-HMAC-SHA256" ,
"ciphertext": "sR6AFEIGWS5Fy9QObNOhbCgfg3vXH4NHVRK1qkhKLQqjkByg2n69lot89qFEJuBsVNTXR77PZR6RjN4h4M9evg==",
"sig": "rT89aCj1WosYjWHHu0mf92S195vYnEGA/reDnYelQsM=",
"iv": "Cfq84/46Qjet3EEQ1HUwSg=="
}
}
```
## Keystore
The key store is a managed way to retrieve加密/解密过程中使用的密钥和以下方法是必需的:
```python
def get_key(key_id):
"""
将密钥作为字节数组返回
"""
return b'my-secret-key'
```
### JavaKeystore
密钥库是一种托管方式,用于检索使用 JCEKS 密钥库的加密/解密期间使用的密钥。使用JavaKeyStore 如下:
```python
from cbencryption import JavaKeyStore
# 使用密钥库文件的路径及其密码创建密钥库
keystore = JavaKeyStore('path/to/keystore.jceks', 'keystore_passphrase')
```
项目详情
关
cbencryption -0.1.2.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | ab643c9e85af593ac5fd950f1638b59bc33d3aa05b562fec05f0713762afe840 |
|
| MD5 | be5089b62ed3032bebd6d9642aa272a6 |
|
| 布莱克2-256 | 60fde84a235b6bba6b3412748a7d19aeb29b40cd19aa060f7f1b8b5215720694 |