Computer >> Máy Tính >  >> Lập trình >> Javascript

Mã hóa một chuỗi bằng Caesar Cipher trong JavaScript

Thuật toán mật mã Caesar

Thuật toán Caesar Cipher là một trong những kỹ thuật mã hóa đơn giản nhất và được biết đến rộng rãi nhất. Nó là một loại mật mã thay thế trong đó mỗi chữ cái trong bản rõ được thay thế bằng một chữ cái với một số vị trí cố định trong bảng chữ cái.

Ví dụ

Với sự dịch chuyển sang trái là 3, D sẽ được thay thế bằng A, E sẽ trở thành B, v.v. Chúng tôi được yêu cầu viết một hàm JavaScript lấy một chuỗi được mã hóa làm đối số đầu tiên và một lượng shift làm đối số thứ hai.

Số lượng dịch chuyển có thể là một số nguyên dương hoặc âm (sự dịch chuyển dương biểu thị sự dịch chuyển sang phải trong khi âm sang trái).

Ví dụ

Sau đây là mã -

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));

Đầu ra

Sau đây là kết quả trên bảng điều khiển -

znoyoygyzxotm