สมมติว่าเรามีระบบการเข้าสู่ระบบที่ผู้ใช้จำเป็นต้องระบุ ID ผู้ใช้ที่ไม่ซ้ำกันเพื่อระบุตัวตนโดยไม่ซ้ำกัน และด้วยเหตุผลด้านความปลอดภัยที่ชัดเจน เราต้องการสร้างความสับสนให้กับ userID เพื่อให้เดาตัวเลขได้ยาก
โดยพื้นฐานแล้ว เราต้องเขียนสองฟังก์ชัน
-
เข้ารหัส (),
-
ถอดรหัส()
ฟังก์ชันแรกควรแปลงการป้อนตัวเลขของเราเป็นการแมปตัวอักษรฐาน 26 และฟังก์ชันที่สองควรแปลงการแมปตัวอักษรกลับเป็นตัวเลขเดิม
แม้ว่าจะใช้งานไม่ได้จริงเนื่องจากอัลกอริธึมการแฮชส่วนใหญ่ไม่มีการแปลงไปมา แต่สำหรับจุดประสงค์ของคำถามนี้ เราไม่ได้พิจารณาเรื่องนั้น
ตัวอย่างเช่น − หากตัวเลขคือ 31 ดังนั้น
encode(31) = 'ea' and, decode('ea') = 31
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const num = 31; const encode = num => { let res = ''; const legend = 'zabcdefghijklmnopqrstuvwxy'; while(num){ const rem = num % (legend.length); res += legend[rem]; num = (Math.floor(num / legend.length)); }; return res; }; const decode = str => { let num = 0; const legend = 'zabcdefghijklmnopqrstuvwxy'; for(let i = 0; i < str.length; i++){ const ind = legend.indexOf(str[i]); num += (ind * Math.pow(legend.length, i)); }; return num; } console.log(encode(num)); console.log(decode('ea'));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
ea 31