Javascript 解密和加密算法funky

Javascript 解密和加密算法funky,javascript,caesar-cipher,transcription,Javascript,Caesar Cipher,Transcription,我为自定义加密和解密算法编写了一个小脚本,它基于凯撒密码和转录密码 首先介绍一下背景知识,解释一下它应该如何工作。假设您要在发送前加密一条消息。您对其应用凯撒密码,即在字母表中将每个字母向右移动3个位置。然后将加密文本按密钥包含的字母数划分为多个部分。假设您的邮件中有n个字母,您的密钥中有m个字母。然后,您的邮件应分成n/m部分(四舍五入或上限),每个m字母。如果消息长度不能被键中的字母数整除,则必须对其进行填充,以按字母A填充缺少的字母。然后由键给出,根据字母表中对应于列编号的键的特定字母的位

我为自定义加密和解密算法编写了一个小脚本,它基于凯撒密码和转录密码

首先介绍一下背景知识,解释一下它应该如何工作。假设您要在发送前加密一条消息。您对其应用凯撒密码,即在字母表中将每个字母向右移动3个位置。然后将加密文本按密钥包含的字母数划分为多个部分。假设您的邮件中有
n个
字母,您的密钥中有
m个
字母。然后,您的邮件应分成
n/m
部分(四舍五入或上限),每个
m
字母。如果消息长度不能被键中的字母数整除,则必须对其进行填充,以按字母
A
填充缺少的字母。然后由键给出,根据字母表中对应于列编号的键的特定字母的位置来转置列。因此,如果您的键是,比如说
LEAK
,则必须根据以下位置对列进行转置:
3241
,因为
1234
对应于
AEKL
(按字母顺序排序)。然后将这个转置矩阵连接回相应的字符串,然后可以发送该字符串。破译过程基本上是按顺序颠倒的→ 你收到一条信息,你知道钥匙。您将其打包到列中,然后将列转置,以对应于键中字母的字母顺序,将其连接回,然后运行反向凯撒密码(将字母向左移动3个位置)。最后你可能会收到一些
X
字母,这其实并不重要

现在谈谈我的问题:我为它编写了一个小Javascript程序,它实际上是一个模块,我还为它编写了一个测试脚本,看看它是如何工作的。但它并不正确。换位错误,导致解密文本格式错误。我知道解密后的文本,因为在编写脚本之前我已经手动完成了这个算法,我知道它应该有什么结果

这是模块:

module.exports={
解密:(消息,密钥)=>{
if(message.length%key.length!=0){
抛出新错误(`message Lenght不能被key Lenght整除!${message.length}不能被${key.length}整除!`);
}
让key_array_unsorted=key.split(“”);
让key_array_sorted=key.split(“”).sort();
让消息_矩阵=[];
对于(i=0;i{
让四重奏洗牌=[];
对于(i=0;i{message_quartets.push(quartet.join(“”))};
让message_caesar=message_quartets.join(“”);
让信息_破译为“”;
对于(i=0;i{
让消息_caesar=“”;
对于(i=0;i{message_quartets.push(quartet.join(“”))};
让message_ciphered=message_quartets.join(“”);
已加密的返回消息;
}
}
这是测试脚本:

const cipher=require('./cipher');
let message=“HGYRDGQCREGLDYQROXRHABAK”;
让key=“myl”;
log(`Received message:${message}`);
log(`Known passphrase:${key}`);
让message_decryphed=cipher.decrypt(消息,密钥);
log(`Deciphered message:${message_Deciphered}`);
让message_encrypted=cipher.encrypt(message_Decrypted,key);
log(`Control encryption:${message_encrypted}`);
模块和测试脚本位于同一文件夹中

这就是输出的方式:

Received message: HGYRDGQCREGLDYQROXRHABAK
Known passphrase: OMYL
Deciphered message: ODEVZDANIBODOVANEULOHYXX
Control encryption: HGYRDGQCREGLDYQROXRHABAK
这是电流输出:

Received message: HGYRDGQCREGLDYQROXRHABAK
Known passphrase: OMYL
Deciphered message: VDOENDZADBIONVOAOUELXYHX
Control encryption: HGYRDGQCREGLDYQROXRHABAK
现在,我确定钥匙的字母排序正确,这不是不正确抄写的原因,我实际上是在寻找钥匙的字母是否正确排序,这没关系
MYL
确实正确排序到
LMOY

问题在于抄本本身,它与钥匙的字母顺序不一致。问题是,我