简单的Javascript加密,PHP用共享密钥解密

Maj*_*our 14 javascript php encryption algorithm

这与安全无关.它也不会让它难以打破.我正在寻找一种简单的算法来改变一个字符串(一个url),它的方式与原来的不一样.该加密会用JavaScript来完成.然后我想将加密的字符串提供给PHP函数以将其更改回原始字符串.两端都可以共享一个密钥,或者转换可以是无钥匙并依赖于逻辑.

理想的解决方案

  1. 会很简单
  2. 将使用可用的javascript函数进行加密
  3. 将使用可用的PHP函数进行解密
  4. 将产生加密的字符串,使其完全不像纯文本
  5. 只会在加密字符串中使用小写字母和数字
  6. 不像Base64-ing那样被广泛使用的方法作为加密.

编辑:在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)

  • +1谢谢Ridcully,我感谢你付出的努力和时间. (2认同)

sha*_*mar 12

如果这就是你想要的,你可以对其进行Base64编码和解码.

[编辑]:OP澄清后:

由于您不希望广泛使用的方法,这里有一个很少使用的方法,并且可以通过仅以LOWERCASE字母和NUMBERS提供输出来为您完成.它是Base32编码/解码.使用以下库:

  • Javascript Base32编码器:http://www.tumuski.com/2010/04/nibbler/
  • PHP Base32解码器:https://www.phpclasses.org/package/3484-PHP-Encode-and-decode-data-with-MIME-base-32-encoding.html


Fos*_*sco 6

如果它不是关于安全性,而不是让它难以打破,那么怎么样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)