js 加解密只需直接套改即可function xor_enc(str, key) {
var crytxt = '';
var k, keylen = key.length;
for(var i=0; i<str.length; i++) {
k = i % keylen;
crytxt += String.fromCharCode(str.charCodeAt(i) ^ key.charCodeAt(k));
}
return crytxt;
}但是由于可能会涉及到中文,问题就复杂多了
任何中文(gbk、utf-8)传递到 js 都统一转换成了 unicode
也就是说 js 只能处理 unicode 编码的串
所以对 php 端的函数做一下改造
测试例<?php
function xor_enc($str,$key) {
$str = array_values(unpack('n*', iconv('gbk', 'ucs-2', $str)));
$key = array_values(unpack('n*', iconv('gbk', 'ucs-2', $key)));
$crytxt = '';
$keylen = count($key);
foreach($str as $i=>$v) {
$k = $i % $keylen;
$crytxt .= pack('n', $v ^ $key[$k]);
}
return iconv('ucs-2', 'gbk', $crytxt);
}$str = "北京欢迎您";
//$str = 'abcd';
$key = "Welcome";
$crytxt = xor_enc($str,$key);
echo "加密后->".$crytxt;
echo "<br>";
echo "解密后->".xor_enc($crytxt,$key);
echo "<p>";
?>
<script>
function xor_enc(str, key) {
var crytxt = '';
var k, keylen = key.length;
for(var i=0; i<str.length; i++) {
k = i % keylen;
crytxt += String.fromCharCode(str.charCodeAt(i) ^ key.charCodeAt(k));
}
return crytxt;
}
str = '<?=$str?>';
key = '<?=$key?>';
var t = xor_enc(str, key);
document.write('js加密 ' + t +'<br>');
document.write('js解密 ' + xor_enc(t, key)+'<br>');document.write('js解密php加密串 ' + xor_enc('<?=$crytxt?>', key)+'<br>');
</script>加密后->區仉歎辭惇
解密后->北京欢迎您
js加密 區仉歎辭惇
js解密 北京欢迎您
js解密php加密串 北京欢迎您
var crytxt = '';
var k, keylen = key.length;
for(var i=0; i<str.length; i++) {
k = i % keylen;
crytxt += String.fromCharCode(str.charCodeAt(i) ^ key.charCodeAt(k));
}
return crytxt;
}但是由于可能会涉及到中文,问题就复杂多了
任何中文(gbk、utf-8)传递到 js 都统一转换成了 unicode
也就是说 js 只能处理 unicode 编码的串
所以对 php 端的函数做一下改造
测试例<?php
function xor_enc($str,$key) {
$str = array_values(unpack('n*', iconv('gbk', 'ucs-2', $str)));
$key = array_values(unpack('n*', iconv('gbk', 'ucs-2', $key)));
$crytxt = '';
$keylen = count($key);
foreach($str as $i=>$v) {
$k = $i % $keylen;
$crytxt .= pack('n', $v ^ $key[$k]);
}
return iconv('ucs-2', 'gbk', $crytxt);
}$str = "北京欢迎您";
//$str = 'abcd';
$key = "Welcome";
$crytxt = xor_enc($str,$key);
echo "加密后->".$crytxt;
echo "<br>";
echo "解密后->".xor_enc($crytxt,$key);
echo "<p>";
?>
<script>
function xor_enc(str, key) {
var crytxt = '';
var k, keylen = key.length;
for(var i=0; i<str.length; i++) {
k = i % keylen;
crytxt += String.fromCharCode(str.charCodeAt(i) ^ key.charCodeAt(k));
}
return crytxt;
}
str = '<?=$str?>';
key = '<?=$key?>';
var t = xor_enc(str, key);
document.write('js加密 ' + t +'<br>');
document.write('js解密 ' + xor_enc(t, key)+'<br>');document.write('js解密php加密串 ' + xor_enc('<?=$crytxt?>', key)+'<br>');
</script>加密后->區仉歎辭惇
解密后->北京欢迎您
js加密 區仉歎辭惇
js解密 北京欢迎您
js解密php加密串 北京欢迎您
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货