Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript";String.fromCharCode";返回的字符集与Python不同';s";chr";功能是_Javascript_Python_Chr_Fromcharcode - Fatal编程技术网

JavaScript";String.fromCharCode";返回的字符集与Python不同';s";chr";功能是

JavaScript";String.fromCharCode";返回的字符集与Python不同';s";chr";功能是,javascript,python,chr,fromcharcode,Javascript,Python,Chr,Fromcharcode,我正在尝试运行一种加密算法,它接收一条输入消息,将其分解为四个字符的块,将“x”位从前面移到后面,然后将其转换回四个加扰字符。我相信这就是所谓的分组移位密码,尽管我不太确定。该程序在Python中运行时可以很好地进行加密和解密。然而,在手动将代码转换为JavaScript之后,我从String.fromCharCode方法中得到了一些奇怪的结果。简单地说,JavaScript方法返回的字符比Python多,特别是“”字符,即使消息和键保持不变。如果您能帮助我解决这个问题,我将不胜感激 这段代码是

我正在尝试运行一种加密算法,它接收一条输入消息,将其分解为四个字符的块,将“x”位从前面移到后面,然后将其转换回四个加扰字符。我相信这就是所谓的分组移位密码,尽管我不太确定。该程序在Python中运行时可以很好地进行加密和解密。然而,在手动将代码转换为JavaScript之后,我从String.fromCharCode方法中得到了一些奇怪的结果。简单地说,JavaScript方法返回的字符比Python多,特别是“”字符,即使消息和键保持不变。如果您能帮助我解决这个问题,我将不胜感激

这段代码是为我正在开发的工具编写的,我需要尽快完成它。我已经尝试使用节点包管理器中的utf8模块将JavaScript字符编码转换为“UTF-8”,但没有成功。我反复检查了我的代码几次,除了字符转换之外,Python和JavaScript代码都在做同样的事情,并且生成相同的数字和值。在下面的代码中,我提到的问题源自JavaScript代码中的“recostructMsg”函数

//JavaScript:
从“整数位长度”导入整数位长度;
//函数将消息分成多个块
函数chunkMsg(消息,chunkSize=4){
//创建一个数组来存储块
让msgChunks=[];
//控制
让chunk=0,
chunkCount=Math.floor(message.length/chunkSize)+1;
//反复浏览消息
例如[
…数组(chunkCount*chunkSize).keys()
]) {
//为下一个区块的编号腾出空间
chunk=chunk(chunkSize-1)*8){
//附加块
msgChunks.push(块);
//重设块
组块=0;
}
}
//返回区块数组
返回msgChunks;
}
//函数来重建消息
函数重构msg(chunks,chunkSize=4){
//空话
让msg='';
//遍历所有的块
for(设i=0;i>)从区块中切掉上面的位数
//%2**8仅从上述代码中获取前8位
//因为2**8=256
//模函数(x%y)的最大值为“y-1”,8位的最大值为255
//换句话说,因为第8位以上的所有内容都是256的倍数,所以我们忽略它们
让number=(chunk>>>(8*(chunkSize-1-j))%2**8;
//将具有上述键码的字符添加到消息中
msg+=String.fromCharCode(数字);
}
}
//回信
返回味精;
}
//函数对消息中的块进行加密
函数encryptMsg(块,键,块大小=4){
//加密块列表
设cipherList=[];
//设置最大位数
让bitCount=chunkSize*8;
//遍历块
为了(让我离开)[
…数组(chunks.length).keys()
]) {
//组块
设chunk=chunk[i];
//将位设置为进位
让进位=块%2**键;
//为剩下的部分腾出空间放在末尾
进位=(进位>>0;
//组合移位字符
让密码=(区块>>>密钥)+进位;
//添加密码
密码列表。推送(密码);
}
//返回密码列表
返回密码列表;
}
#Python:
#函数将消息分块为32位的集合
def chunk_msg(msg,chunk_size=4):
#创建一个列表来存储块
msg_chunks=[]
#控制变量
区块=0
chunk\u count=len(msg)//chunk\u大小+1
#反复浏览消息
对于范围内的i(块数*块大小):
#为下一个角色的编号腾出空间
区块=区块(区块大小-1)*8:
msg_chunks.append(chunk)
区块=0
#返回块
返回msg_块
#函数来重建消息
def REBUCT_msg(块,块大小=4):
#空话
msg=“”
#遍历所有的块
对于范围内的i(len(块)):
chunk=chunk[i]
#循环遍历每个块
对于范围内的j(块大小):
#以下代码的注释
#(8*(chunk_size-1-j))是要从端部切掉的位数
#(区块>>)从区块中切掉上面的位数
#%2**8仅从上述代码中获取前8位
#因为2**8=256
#模函数(x%y)的最大值为“y-1”,8位的最大值为255
#换句话说,因为第8位以上的所有内容都是256的倍数,所以我们忽略它们
数字=(区块>>(8*(区块大小-1-j))%2**8
打印(数字)
#将具有上述键码的字符添加到消息中
msg+=chr(数字)
打印(f“\n\n{chr(数字)}”)
#回信
返回消息
#函数来加密块
def apply_rotate(消息列表、键、块大小=4):
密码列表=[]
#设置最大位数
位计数=块大小*8
#遍历每个消息块
对于范围内的i(len(msg_列表)):
#组块
chunk=msg_list[i]
打印(块)
#将位设置为进位
进位=区块%(2**键)
#为要放置在端部的剩余钻头留出空间
进位=进位>键)+进位
#将编码块添加到列表中
密码列表。追加(密码)
打印(cip)