Giả sử chúng ta có một hệ thống đăng nhập trong đó người dùng được yêu cầu cung cấp một userID duy nhất để nhận dạng duy nhất họ. Và vì lý do bảo mật rõ ràng, chúng tôi muốn làm xáo trộn userID để khá khó đoán số.
Về cơ bản, chúng tôi bắt buộc phải viết hai hàm.
-
encode (),
-
giải mã ()
Hàm đầu tiên sẽ chuyển đổi đầu vào số của chúng ta thành ánh xạ bảng chữ cái cơ số 26. Và hàm thứ hai sẽ chuyển đổi ánh xạ bảng chữ cái trở lại thành số ban đầu.
Mặc dù điều này không thực tế lắm vì hầu hết các thuật toán Hashing không cung cấp chuyển đổi tới và lui, nhưng với mục đích của câu hỏi này, chúng tôi không xem xét điều đó.
Ví dụ - Nếu số là 31, thì
encode(31) = 'ea' and, decode('ea') = 31
Ví dụ
Mã cho điều này sẽ là -
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'));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
ea 31