Tôi đã sử dụng toán tử bitwise trong mã php trả về chuỗi giải mã trong base64. Tôi muốn thực hiện mã php giống như trong javascript. Theo kiến thức của tôi chr()
tương đương với String.fromCharCode(n)
và ord()
là n.charCodeAt(0)
. Nhưng cả hai đầu ra cuối cùng đều khác nhau.Tương đương với hàm php chr() và ord() trong javascript
mã PHP: -
<?php
$pass = "RuvEtrUt74gaDR5DufuChe";
$en = "";
foreach(str_split($pass) as $chr){
$b1=((($chr = ord($chr)) >> 1) & 0xFF);
$b2=($chr << (8 - 1));
$en = $en.chr($b1|$b2);
}
$en = base64_encode($en); //Output:-)º;¢:9ª:›³°")š"º3º¡4²
echo ($en);
echo (base64_decode($en)); //Output:- Kbo7ojo5qjqbGrOwIimaIrozuqE0sg==
Trong Javascript Code: -
var pass = "RuvEtrUt74gaDR5DufuChe";
var en = "";
var passArr = pass.split('');
for (var i = 0; i < passArr.length; i++) {
var b1 = (((passArr[i] = passArr[i].charCodeAt(0)) >> 1) & 0xFF);
var b2 = (passArr[i] << (8 - 1));
en += chr(b1 | b2);
}
console.log('en',en);//Output:- ⤩㪺㬻⊢㨺㤹⪪㨺ᮛᨚ㎳グ∢⤩∢㪺㌳㪺↡㐴㊲
en = window.btoa(unescape(encodeURIComponent(en)));
console.log('en', en);//Output:- 4qSp46q646y74oqi46i646S54qqq46i64a6b4aia446z44Kw4oii4qSp4aqa4oii46q644yz46q64oah45C044qy
//need same as in php i.e, :- Kbo7ojo5qjqbGrOwIimaIrozuqE0sg==
function chr(codePt) {
if (codePt > 0xFFFF) {
codePt -= 0x10000
return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 + (codePt & 0x3FF))
}
return String.fromCharCode(codePt)
}
Như bạn thấy ở trên đầu ra javscript là khác với sản lượng php. Tôi cần đầu ra chính xác trong javascript mà trở về trong mã php. Cảm ơn