Maj*_*our 14 javascript php encryption algorithm
这与安全无关.它也不会让它难以打破.我正在寻找一种简单的算法来改变一个字符串(一个url),它的方式与原来的不一样.该加密会用JavaScript来完成.然后我想将加密的字符串提供给PHP函数以将其更改回原始字符串.两端都可以共享一个密钥,或者转换可以是无钥匙并依赖于逻辑.
理想的解决方案
编辑:在shamittomar的回答之后添加了最后一个要求.
Rid*_*lly 26
您可以在javascript中使用按位XOR对字符串进行编码,然后再次在PHP中对其进行解码.我为你写了一个小Javascript示例.它在PHP中的工作原理相同.如果您使用已编码的字符串第二次调用enc(),您将再次获得原始字符串.
<html>
<head><title></title></head>
<body>
<script type="text/javascript">
function enc(str) {
var encoded = "";
for (i=0; i<str.length;i++) {
var a = str.charCodeAt(i);
var b = a ^ 123; // bitwise XOR with any number, e.g. 123
encoded = encoded+String.fromCharCode(b);
}
return encoded;
}
var str = "hello world";
var encoded = enc(str);
alert(encoded); // shows encoded string
alert(enc(encoded)); // shows the original string again
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在PHP中做这样的事情(注意,这没有经过测试,自从我做PHP以来已经很久了):
$encoded = "..."; // <-- encoded string from the request
$decoded = "";
for( $i = 0; $i < strlen($encoded); $i++ ) {
$b = ord($encoded[$i]);
$a = $b ^ 123; // <-- must be same number used to encode the character
$decoded .= chr($a)
}
echo $decoded;
Run Code Online (Sandbox Code Playgroud)
sha*_*mar 12
如果这就是你想要的,你可以对其进行Base64编码和解码.
[编辑]:OP澄清后:
由于您不希望广泛使用的方法,这里有一个很少使用的方法,并且可以通过仅以LOWERCASE字母和NUMBERS提供输出来为您完成.它是Base32编码/解码.使用以下库:
如果它不是关于安全性,而不是让它难以打破,那么怎么样ROT-13?
//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/string/rot13 [rev. #1]
String.prototype.rot13 = function(){
return this.replace(/[a-zA-Z]/g, function(c){
return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);
});
};
...
var s = "My String";
var enc = s.rot13(); // encrypted value in enc
Run Code Online (Sandbox Code Playgroud)
PHP具有本机功能,httpstr_rot13://php.net/manual/en/function.str-rot13.php
$decrypted = str_rot13($_GET['whatever']);
Run Code Online (Sandbox Code Playgroud)