JS 实现一个对称加密算法

发布于 2023-03-05 22:44:05 字数 1273 浏览 104 评论 0

问题描述

我们在互联网中的操作如果没有经过加密算法的加密是非常危险的,使用 HTTPS 是一个很好的选择, 它基于TSL/SSL 对传输层的内容进行加密。 尽管其中的核心算法是非对称加密, 但是真正传输数据的过程仍然是对称加密,其原因就是非对称加密的复杂性。

那么如何实现一个对称加密算法呢?补充代码,使之符合预期。


function encrpt(msg, key) {
  // 补充代码
}

function decrypt(secretMsg, key) {
  // 补充代码
}

const msg = "hello";
const key = null; // key can be anything

const secretMsg = encrpt(msg, key);


console.log(secretMsg);  // secretMsg !== msg

console.log(decrypt(secretMsg, key) === msg);  // true

其实,服务端和客户端用对称加密之前,协商的过程就是确定算法(比如上述就是一种算法)以及 key 的过程

参考代码

function encrpt(msg, key) {
  // 补充代码
  const secretMsg = [];
  for (let i = 0; i < msg.length; i++) {
    secretMsg[i] = msg[i].charCodeAt() + key;
  }

  return secretMsg.join('\n');
}

function decrypt(msg, key) {
  // 补充代码
  const secretMsg = msg.split('\n')
  const ret = [];
  for (let i = 0; i < secretMsg.length; i++) {
    ret[i] = String.fromCharCode(secretMsg[i] - key);
  }

  return ret.join("");
}

const msg = "hello";
const key = 3;

const secretMsg = encrpt(msg, key);

decrypt(secretMsg, key) === msg;

console.log(secretMsg);  // secretMsg !== msg

console.log(decrypt(secretMsg, key) === msg);  // true

扩展

如何优化你的算法,使得加密之后的字符串尽可能没有规律。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

橘虞初梦

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

尘世孤行

文章 0 评论 0

烟─花易冷

文章 0 评论 0

倒带

文章 0 评论 0

忱杏

文章 0 评论 0

送君千里

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文