Thuật toán Caesar Cipher
Thuật toán Caesar Cipher là một trong những kỹ thuật mã hóa đơn giản và được biết đến rộng rãi nhất. Đây là một loại mật mã thay thế trong đó mỗi chữ cái trong văn bản gốc được thay thế bằng một chữ cái ở một số vị trí cố định xuống theo bảng chữ cái.
Ví dụ:
Với dịch trái 3, D sẽ được thay bằng A, E trở thành B, và cứ thế. Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi cần mã hóa làm đối số đầu tiên và một lượng dịch làm đối số thứ hai.
Lượng dịch có thể là số nguyên dương hoặc âm (dịch dương nghĩa là dịch phải, âm nghĩa là dịch trái).
Ví dụ
Dưới đây là mã nguồn:
const str = 'thisIsAString'; const getMap = (legend, shift) => { return legend.reduce((charsMap, currentChar, charIndex) => { const copy = { ...charsMap }; let ind = (charIndex + shift) % legend.length; if (ind < 0) { ind += legend.length; }; copy[currentChar] = legend[ind]; return copy; }, {}); }; const encrypt = (str, shift = 0) => { const legend = 'abcdefghijklmnopqrstuvwxyz'.split(''); const map = getMap(legend, shift); return str .toLowerCase() .split('') .map(char => map[char] || char) .join(''); }; console.log(encrypt(str, 6));Kết quả
Đầu ra trên console:
znoyoygyzxotm
Lưu ý: Implementation này chỉ xử lý chữ cái a-z, chuyển everything về lowercase. Ký tự không phải chữ cái được giữ nguyên.