バイトと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進数表現が返されるため、両方の形式を比較できます。
チャレンジ
簡単これは小さな練習プロジェクトです。セットアップは用意されているので、exercise.jsだけを編集してください。
渡されたテキストをUTF-8バイトにエンコードしてから16進数にした値を含むhexフィールドを返してください。{"text":"Hi"}を/resultにPOSTすると、{"hex":"4869"}が返されます。テキストAdaの場合は416461が返されます。
自分で試してみよう
export function exercise({ text }) {
return { hex: text };
}
認証とセキュリティのすべてのレッスン
自分で練習してみよう: Expressプレイグラウンド