3ncr/tokencrypt-php

3ncr.org V1 字符串加密标准的实现。

1.0.6 2023-04-21 11:06 UTC

This package is auto-updated.

Last update: 2024-09-21 14:10:15 UTC


README

Latest Stable Version Total Downloads License Build Status

3ncr.org 是一个字符串加密/解密的规范(算法 + 存储格式)。最初它被设计用于加密配置文件中的令牌。

3ncr.org v1 使用 AES-256-GCM,相对简单。

    header + base64(iv + data + tag) 

加密数据看起来像这样 3ncr.org/1#pHRufQld0SajqjHx+FmLMcORfNQi1d674ziOPpG52hqW5+0zfJD91hjXsBsvULVtB017mEghGy3Ohj+GgQY5MQ

这是一个 PHP 7.2+ 的实现。

使用方法

$tokenCrypt = new \ThreeEncr\TokenCrypt($secret, $salt, 1000);

$secret$salt - 是加密密钥(技术上一个是密钥,另一个是盐,但你需要将它们都存储在某个地方,最好在不同的地方)。

你可以将它们存储在任何你喜欢的地方:环境变量、文件、共享内存、来自序列号或 MAC 的驱动器。发挥创意。

1000 - 是 PBKDF2 轮数。越多越慢。如果你确定你的秘密有 256 位的熵并且相当随机,你可以使用 '1'(实际上是 HMAC SHA3 哈希)

创建类实例后,你可以直接使用 encrypt3ncr 和 decrypt3ncr 方法(它们接受并返回字符串)

$token = '08019215-B205-4416-B2FB-132962F9952F'; // your secret you want to encrypt 
$encryptedSecretToken = $tokenCrypt->encrypt3ncr($token);
// now $encryptedSecretToken === '3ncr.org/1#pHRufQld0SajqjHx+FmLMcORfNQi1d674ziOPpG52hqW5+0zfJD91hjXsBsvULVtB017mEghGy3Ohj+GgQY5MQ'

// ... some time later in another context ...  

$decryptedSecretToken = $tokenCrypt->decrypt3ncr($encryptedSecretToken); 
// now $decryptedSecretToken === ''08019215-B205-4416-B2FB-132962F9952F';

或者你可以读取 JSON 文件并解密其值

$encConfig = json_decode(file_get_contents('config.json'), false); 
$config = $token->decrypt3ncrArray($encConfig);