使用JavaScript编写的摩尔斯密码加密解密工具

56 min read

摩斯密码是一种通过点、划等符号表示字母和数字的加密方法。以下是使用 JavaScript 实现摩斯密码加密和解密的示例代码:

// 摩斯密码字典
const morseCode = {
  "A": ".-", "B": "-...", "C": "-.-.", "D": "-..", "E": ".", "F": "..-.", 
  "G": "--.", "H": "....", "I": "..", "J": ".---", "K": "-.-", "L": ".-..", 
  "M": "--", "N": "-.", "O": "---", "P": ".--.", "Q": "--.-", "R": ".-.", 
  "S": "...", "T": "-", "U": "..-", "V": "...-", "W": ".--", "X": "-..-", 
  "Y": "-.--", "Z": "--..", "0": "-----", "1": ".----", "2": "..---", 
  "3": "...--", "4": "....-", "5": ".....", "6": "-....", "7": "--...", 
  "8": "---..", "9": "----."
};

// 加密函数
function encryptMorseCode(text) {
  // 将文本转换为大写字母
  const uppercaseText = text.toUpperCase();
  let result = "";

  // 将每个字符转换为摩斯密码
  for (let i = 0; i < uppercaseText.length; i++) {
    const char = uppercaseText[i];
    if (morseCode[char]) {
      result += morseCode[char] + " ";
    }
  }

  return result.trim(); // 去掉开头和结尾的空格
}

// 解密函数
function decryptMorseCode(code) {
  let result = "";

  // 将摩斯密码分割成单个字符
  const chars = code.split(" ");

  // 将每个字符转换为字母或数字
  for (let i = 0; i < chars.length; i++) {
    const char = chars[i];
    if (char !== "") {
      for (const [key, value] of Object.entries(morseCode)) {
        if (value === char) {
          result += key;
          break;
        }
      }
    } else {
      result += " ";
    }
  }

  return result;
}

// 使用示例
const plaintext = "Hello, World!";
const ciphertext = encryptMorseCode(plaintext);
console.log(ciphertext); // ".... . .-.. .-.. --- --..-- / .-- --- .-. .-.. -.. -.-.--"

const decryptedText = decryptMorseCode(ciphertext);
console.log(decryptedText); // "HELLO, WORLD!"

此代码使用了一个摩斯密码字典,将字母和数字映射为摩斯密码,然后使用加密和解密函数将文本转换为摩斯密码或反之。