Menu
CoddyTech

バイトと16進数のテキスト

CoddyのNode.jsジャーニー「認証とセキュリティ」セクションの一部。レッスン 1/24。

暗号関数はバイトを扱います。1バイトは0から255までの数値です。UTF-8はテキストをバイトとしてエンコードし、NodeではBufferがそのバイトを保持します。16進数(hex)では、0から9までの数字とaからfまでの文字を使い、各バイトを2文字で表します。これにより、バイトをテキストとして便利に保存できます。

const bytes = Buffer.from('Ok', 'utf8');
bytes.toString('hex'); // '4f6b'
Buffer.from('4f6b', 'hex').toString('utf8'); // 'Ok'

文字Oのバイト値は10進数で79で、16進数では4fと表します。

この変換は可逆です。情報ではなく表現を変えるだけです。パスワードを16進数にエンコードしても、保護されるわけではありません。パスワードハッシュは、デコードするのではなく、導出値を再計算して照合します。ここでは入力は通常のテキストで、演習ではその16進数表現が返されるため、両方の形式を比較できます。

challenge icon

チャレンジ

簡単

これは小さな練習プロジェクトです。セットアップは用意されているので、exercise.jsだけを編集してください。

渡されたテキストをUTF-8バイトにエンコードしてから16進数にした値を含むhexフィールドを返してください。{"text":"Hi"}を/resultにPOSTすると、{"hex":"4869"}が返されます。テキストAdaの場合は416461が返されます。

自分で試してみよう

export function exercise({ text }) {
    return { hex: text };
}

認証とセキュリティのすべてのレッスン

自分で練習してみよう: Expressプレイグラウンド