#宝库 #信用卡 #PostgreSQL #数据 #卡片 #加密 #Redis

data_

数据宝库是一个模块化、实用的 Rust 信用卡宝库

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 次下载

MIT 许可证

46KB
502

数据宝库

数据宝库是一个通过令牌存储和检索信用卡数据的库

Actions Status codecov Crates.io Documentation License Criterion

# 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