สมมติว่าเรามีระบบการเข้าสู่ระบบที่ผู้ใช้จำเป็นต้องระบุ 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