Byte và văn bản hex
Thuộc phần Xác thực và bảo mật trong hành trình Node.js của Coddy. Bài học 1 trên 24.
Các hàm mật mã hoạt động với byte. Một byte là một số từ 0 đến 255. UTF-8 mã hóa văn bản thành byte, còn Buffer lưu các byte đó trong Node. Hệ thập lục phân, hay hex, biểu diễn mỗi byte bằng hai ký tự, dùng các chữ số từ 0 đến 9 và các chữ cái từ a đến f. Nhờ vậy, bạn có thể lưu byte dưới dạng văn bản.
const bytes = Buffer.from('Ok', 'utf8');
bytes.toString('hex'); // '4f6b'
Buffer.from('4f6b', 'hex').toString('utf8'); // 'Ok'Byte của chữ cái O có giá trị thập phân là 79, viết dưới dạng hex là 4f.
Phép chuyển đổi này có thể đảo ngược: nó thay đổi cách biểu diễn chứ không thay đổi thông tin. Mã hóa mật khẩu bằng hex không giúp bảo vệ mật khẩu. Để kiểm tra mã băm mật khẩu, ta tính lại giá trị được tạo ra thay vì giải mã nó. Ở đây, đầu vào là văn bản thông thường, còn bài tập trả về biểu diễn hex để bạn có thể so sánh cả hai dạng.
Thử thách
DễĐây là một dự án luyện tập nhỏ. Phần thiết lập đã có sẵn, bạn chỉ chỉnh sửa exercise.js.
Trả về trường hex chứa văn bản được cung cấp, mã hóa thành byte UTF-8 rồi chuyển sang hệ thập lục phân. Gửi {"text":"Hi"} bằng POST đến /result sẽ trả về {"hex":"4869"}. Văn bản Ada trả về 416461.
Tự làm thử
export function exercise({ text }) {
return { hex: text };
}
Tất cả bài học trong Xác thực và bảo mật
1Mật khẩu
Byte và văn bản hexTạo khóa từ mật khẩuSalt mớiKhông bao giờ lưu mật khẩuSo sánh các byte của khóaKiểm tra mật khẩuQuy tắc đăng ký2Phiên làm việc và cookie
Ghi nhớ bằng cookieTra cứu phiênPhiên đăng nhậpĐịnh tuyến sau khi đăng nhậpTự luyện tập: Playground Express