marekweb / opaque-id
此包最新版本(dev-master)没有可用的许可证信息。
不透明ID:整数ID的混淆方案
dev-master
2017-06-06 15:52 UTC
This package is not auto-updated.
Last update: 2024-09-24 08:35:38 UTC
README
不透明ID使用基于密钥的可逆方案来混淆整数。
它旨在在包含在公共URL或API响应中时隐藏资源/数据库ID,无需使用代理数据库键。
不透明ID看起来是这样的
ID Opaque Hex Opaque Base64
0 7ea0aa7a fqCqeg
1 0ae54fa3 CuVPow
2 cbae9d6c y66dbA
3 db2ac148 2yrBSA
该算法是一对一的整数映射(包含一个密钥)。它轻量级且紧凑,但牺牲了实际的加密安全性。对于真正的加密,请使用严肃的加密算法(尽管你不会得到如此紧凑的密文)。
用法
以下是使用不透明ID的示例(Python示例)
# Create an instance with your secret key (pick your own key!) encoder = opaque.OpaqueEncoder(0x3b79db9a) print encoder.encode_hex(3) # -> db2ac148 print encoder.encode_base64(3) # -> 2yrBSA print encoder.decode_base64("2yrBSA") # -> 3
以下是一个PHP示例
$encoder = new OpaqueEncoder(0x3b79db9a); print $encoder->encode($id); // Default mode is hex $encoder = new OpaqueEncoder(0x3b79db9a, OpaqueEncoder::ENCODING_BASE64); print $encoder->encode($id); // Will use base64 mode
使用composer安装类
composer require marekweb/opaque-id
然后使用以下方式引入
require 'vendor/autoload.php'; $encoder = new OpaqueEncoder(0x3b79db9a);
实现
- PHP:
OpaqueEncoder.php
类 - Python:
opaque.py
模块
作者
(c) 2011 Marek Z. @marekweb