根据这个问题的相关答案,我试图整理一个类似于这个PHP进程的打包/解包解决方案,但是在Nodejs(Javascript)中使用md5和bufferpack
这是PHP方法(改编自DaloRADIUS:
$challenge = 'c731395aca5dcf45446c0ae83db5319e';
$uamsecret = 'secret';
$password = 'password';
$hexchal = pack ("H32", $challenge);
$newchal = pack ("H*", md5($hexchal . $uamsecret));
$response = md5("\0" . $password . $newchal);
$newpwd = pack("a32", $password);
$pappassword = implode ("", unpack("H32", ($newpwd ^ $newchal)));
echo "Response: ---> ", $response, "\n";
echo "New Password: ---> ", $newpwd, "\n";
echo "Pap Password: ---> ", $pappassword, "\n";
Run Code Online (Sandbox Code Playgroud)
以上回声如下:
以明文为准:
Response: ---> 2d4bd27184f5eb032641137f728c6043
New Password: ---> password
Pap Password: …Run Code Online (Sandbox Code Playgroud) 我有一个字节数组:
[101, 97, 115, 121] # ['e', 'a', 's', 'y']
Run Code Online (Sandbox Code Playgroud)
我如何将其解释为打包的二进制文件?就像struct.Struct(format).unpack在 Python 中一样:
>>> import struct
>>> s = struct.Struct('>1I') # a big-endian, two-byte, unsigned int
>>> s.unpack('easy')
(1700885369,)
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有导入的情况下在 JavaScript 中实现它?