13 个版本
0.3.4 | 2021 年 6 月 21 日 |
---|---|
0.3.3 | 2021 年 1 月 31 日 |
0.3.1 | 2020 年 11 月 22 日 |
0.2.3 | 2020 年 10 月 30 日 |
0.1.5 | 2020 年 8 月 7 日 |
#1377 在 数据库接口
每月 33 次下载
46KB
502 行
数据宝库
数据宝库是一个通过令牌存储和检索信用卡数据的库
# Cargo.toml
[dependencies]
data_vault = "^0.3"
# Note: showing Redis and Postgres backend settings
# REDIS CONFIGURATION
REDIS_URL=redis://:[email protected]/
# REDIS_POOL_MAX_SIZE=16
# POSTGRES CONFIGURATION
POSTGRES.HOST=127.0.0.1
POSTGRES.USER=data_vault
POSTGRES.PASSWORD=foobared
POSTGRES.DBNAME=data_vault
POSTGRES.POOL.MAX_SIZE=100000
POSTGRES.POOLTIMEOUTS_WAIT_SECS=60
POSTGRES.POOL.TIMEOUTS_WAIT_NANOS=0
# ENCRYPTION KEYS
ENCRYPTED_DATA_VAULT_KEY=000102030405060708090a0b0c0d0e0f
ENCRYPTED_DATA_VAULT_IV=f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
// example.rs
// traits
use data_vault::DataVault;
use data_vault::encryption::traits::Encryption;
// Interchangeable backend
use data_vault::RedisDataVault;
// Interchangeable encryption
use data_vault::encryption::AesGcmSivEncryption;
// Interchangeable tokenizer
use data_vault::tokenizer::Blake3Tokenizer;
// credit card type
use credit_card::CreditCard;
use tokio;
#[tokio::main(flavor = "multi_thread")]
async fn main() {
let vault = RedisDataVault::<AesGcmSivEncryption, Blake3Tokenizer>::new().unwrap();
let cc = CreditCard {
number: "4111111111111111".to_string(),
cardholder_name: "Graydon Hoare".to_string(),
expiration_month: "01".to_string(),
expiration_year: "2023".to_string(),
brand: None,
security_code: None
};
let token = vault.store_credit_card(&cc).await.unwrap();
let credit_card = vault.retrieve_credit_card(&token.to_string()).await.unwrap();
assert_eq!(credit_card.number, cc.number)
}
当前功能
- 存储 信用卡
- 存储
String
- 自动加密和解密
- Blake3 令牌化
- Redis 连接池
- Postgres 连接池
- 可从 .env 文件或环境变量中进行配置
- 可互换的后端
- 可互换的加密
- 可互换的令牌化哈希器
性能(AMD Ryzen 9 3900X)
Redis
以下 示例 输出了以下性能统计:每秒令牌化约 ~100,000 张信用卡。
tokenized and stored 100000 credit cards in 1.058474365s
retrieved 100000 credit cards in 5.353857633s
tokenized, stored, and retrieved 100000 credit cards in 6.412331998s
Postgres
以下 示例 输出了以下性能统计:每秒令牌化约 ~1,500 张信用卡。
tokenized and stored 1000 credit cards in 635.963241ms
retrieved 1000 credit cards in 938.834896ms
tokenized, stored, and retrieved 1000 credit cards in 1.574798137s
依赖
~14–25MB
~403K SLoC