サーバー、ネットワーク、Web – 御社に合ったソリューション。
JSON を貼り付けて検証・整形 – ブラウザ内で直接、ページ再読み込みなし。
生の JSON を貼り付け – オブジェクトと配列に対応。
検証後、結果がここに表示されます。
テキストと Base64 文字列をブラウザ内で変換 – ページ再読み込みなし。
デコードする Base64 文字列を貼り付け。
デコード結果がここに表示されます。
エンコードするテキストを貼り付け – UTF-8 対応。
エンコード結果がここに表示されます。
カスタムキーでテキストを暗号化・復号 – SKC 方式に基づく。
復号する暗号化 v2 文字列を貼り付け。
復号結果がここに表示されます。
暗号化するテキストを貼り付け。
暗号化結果がここに表示されます。
function encode(string $string, string $secKey): string
{
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$key = hash('sha256', $secKey . '|encode_v2', true);
$box = sodium_crypto_secretbox($string, $nonce, $key);
return 'v2.' . rtrim(strtr(base64_encode($nonce . $box), '+/', '-_'), '=');
}
function decode(string $stringVal, string $secKey): string
{
$stringVal = str_replace(' ', '+', $stringVal);
if (str_starts_with($stringVal, 'v2.')) {
$stringVal = substr($stringVal, 3);
}
$raw = base64_decode(strtr($stringVal, '-_', '+/'), true);
if ($raw === false || strlen($raw) < SODIUM_CRYPTO_SECRETBOX_NONCEBYTES + SODIUM_CRYPTO_SECRETBOX_MACBYTES) {
return '';
}
$nonce = substr($raw, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$box = substr($raw, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$key = hash('sha256', $secKey . '|encode_v2', true);
$plain = sodium_crypto_secretbox_open($box, $nonce, $key);
return $plain === false ? '' : $plain;
}