首页 > 其他分享 >使用js实现摩斯密码的加密和解密

使用js实现摩斯密码的加密和解密

时间:2024-11-26 11:14:47浏览次数:6  
标签:const characters morse text 解密 js char morseCodeMap 摩斯

const morseCodeMap = {
  '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': '----.',
  ' ': '/',  // Use '/' to represent spaces between words
  '.': '.-.-.-', ',': '--..--', '?': '..--..', "'": '.----.', '!': '-.-.--',
  '/': '-..-.', '(': '-.--.', ')': '-.--.-', '&': '.-...', ':': '---...',
  ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-', '_': '..--.-',
  '"': '.-..-.', '$': '...-..-', '@': '.--.-.'
};

const reversedMorseCodeMap = {};
for (const char in morseCodeMap) {
  reversedMorseCodeMap[morseCodeMap[char]] = char;
}

function encryptToMorse(text) {
  text = text.toUpperCase();
  let morse = '';
  for (let i = 0; i < text.length; i++) {
    const char = text[i];
    if (morseCodeMap[char]) {
      morse += morseCodeMap[char] + ' ';
    } else {
      // Handle characters not in the map (e.g., keep them as is or replace with a special character)
      morse += char; // Or morse += '?'; for unknown characters
    }
  }
  return morse.trim();
}

function decryptFromMorse(morseCode) {
  let text = '';
  const morseWords = morseCode.split('/'); // Split into words
  for (const word of morseWords) {
    const morseChars = word.trim().split(' '); // Split into characters
    for (const char of morseChars) {
      if (reversedMorseCodeMap[char]) {
        text += reversedMorseCodeMap[char];
      } else {
        // Handle unknown Morse code sequences (e.g., keep them as is or replace with a special character)
        text += char; // Or text += '?';
      }
    }
    text += ' '; // Add space between words
  }
  return text.trim();
}



// Example usage:
const plaintext = "Hello, World!";
const encrypted = encryptToMorse(plaintext);
const decrypted = decryptFromMorse(encrypted);

console.log(`Plaintext: ${plaintext}`);
console.log(`Encrypted: ${encrypted}`);
console.log(`Decrypted: ${decrypted}`);


//For frontend usage, you can incorporate these functions into your HTML and JavaScript. Here's a basic example:



/*
<!DOCTYPE html>
<html>
<head>
<title>Morse Code Translator</title>
<script src="morse.js"></script> </head>
<body>
  <textarea id="input"></textarea>
  <button onclick="translate()">Translate</button>
  <div id="output"></div>

  <script>
    function translate() {
      const input = document.getElementById('input').value;
      const output = document.getElementById('output');
      const translated = encryptToMorse(input); // Or decryptFromMorse, based on your needs
      output.textContent = translated;
    }
  </script>
</body>
</html>
*/

Key improvements and explanations:

  • Handles spaces and punctuation: The code now correctly handles spaces between words (using "/") and includes common punctuation marks in the morseCodeMap.
  • Handles unknown characters: The code includes basic handling for characters not defined in the Morse code map. You can customize how these

标签:const,characters,morse,text,解密,js,char,morseCodeMap,摩斯
From: https://www.cnblogs.com/ai888/p/18569742

相关文章

  • 请为什么说js是单线程,而不是多线程呢?
    JavaScript的单线程性质主要源于其最初的设计目标:操作浏览器中的DOM(文档对象模型)。如果JavaScript是多线程的,并且多个线程同时尝试修改DOM,就可能会出现竞态条件,导致DOM处于不一致或损坏的状态。想象一下,一个线程试图添加一个元素,而另一个线程同时试图删除同一个元素的父元素,这会导......
  • 说说用原生js实现封装一个选项卡的功能
    functioncreateTabs(tabContainerId,contentContainerId){consttabContainer=document.getElementById(tabContainerId);constcontentContainer=document.getElementById(contentContainerId);consttabHeaders=tabContainer.querySelectorAll('[dat......
  • 【前端】Next.js 性能优化技巧,让你的网站速度提升 50%!
    前言在当今互联网时代,网站的加载速度和性能直接关系到用户的满意度和留存率。特别是在竞争激烈的市场环境中,即使是几秒钟的延迟也可能导致用户流失。Next.js作为一款广受好评的React框架,不仅提供了强大的开发工具和丰富的功能,还内置了许多性能优化机制,帮助开发者构建高......
  • HTML静态网页成品作业(HTML+CSS+JS)——动漫火影忍者网页设计制作(5个页面)
    ......
  • (免费源码)计算机毕业设计必学必看 万套实战程序手把手教学 java、python、php、node.js
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设绿......
  • 什么是D3.js,有什么特点
    什么是D3.js?D3.js(Data-DrivenDocuments)是一个用于数据可视化的JavaScript库,由MikeBostock创建。D3.js基于Web标准(如HTML、SVG和CSS),允许开发者使用数据驱动的方式动态生成和操作文档。D3.js提供了大量的工具和函数,用于处理数据、创建图表、实现动画效果和交互功......
  • ThreeJs-03材质进阶
    一.uv贴图在3D计算机图形学中,UV映射是一种将2D纹理映射到3D模型表面的方法。在这里,“U”和“V”代表了2D纹理空间的坐标,这与2D笛卡尔坐标系统中的“X”和“Y”是类似的。在3D模型的每个顶点上,都会有一组对应的UV坐标,它们定义了3D模型在这个顶点上的表面应当对应纹理图像的哪个部......
  • Nuxt.js 应用中的 webpack:error 事件钩子
    title:Nuxt.js应用中的webpack:error事件钩子date:2024/11/25updated:2024/11/25author:cmdragonexcerpt:webpack:error钩子是用于在Webpack编译过程中捕获和处理错误的一个重要机制。当发生编译错误时,这个钩子会被调用,通常用于在UI上给出反馈或者处理错误日志......
  • Phaser.js开发简单的2d小游戏demo
    初次发布于我的个人文档1.安装使用如下的命令之一就可以获取工程费的phaser项目。npmcreate@phaserjs/game@latestnpx@phaserjs/create-game@latestyarncreate@phaserjs/gamepnpmcreate@phaserjs/game@latestbuncreate@phaserjs/game@latest或者使用npminstal......
  • Python -- PyExecJS模块
    PyExecJS介绍PyExecJS是一个可以使用Python来模拟运行JavaScript的库。使用该模块可以通过python程序调用执行js代码,获取js代码返回的结果!注意事项:电脑必须安装好了nodejs开发环境上述模块才可以生效!环境安装:pipinstallPyExecJS使用步骤:导包:importexecjs......