PHP简单字符串加密和解密

名字

有没有在PHP一个简单的函数比其他mcrypt()的是能encryptdecrypt一个字符串。

我正在尝试下面的代码,但是对于我想做的事情来说,这太多了。

我正在尝试加密随URL发送的页码,因此用户将无法仅通过在浏览器位置栏中更改页码来访问页面。我的页码也有一些其他数据,我不想让用户看到。

例子: http://www.example.com/p10:05 to http://www.example.com/895f852d22d558esc23

我不需要下面的代码这样的高级加密和解密。在我的示例中,可以做的事情就足够了。

我不喜欢使用mcrypt的另一个原因是因为==它在字符串末尾添加了2

$salt ='iodine';

    function simple_encrypt($text)
    {
        global $salt;
        return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
    }

    function simple_decrypt($text)
    {
        global $salt;
        return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
    }

    echo simple_encrypt('Hello')
马丁·波德维斯(Maarten Bodewes)

MCrypt不会将那些==字符添加到字符串中,base 64编码会添加这些字符。可以简单地将其删除。只需确保base64字符串是4个字符的倍数,就可以在接收到该字符串时再次将其添加回去。

默认情况下,Base 64可以包含'/'和'+'字符(取决于输入)。将其替换为URL安全-_字符

该代码所示MCRYPT_RIJNDAEL_256,其是AES; 是Rijndael,块大小为256位。使用MCRYPT_RIJNDAEL_128-这AES-会更好。这仍然允许代码最多加密16个字符数字值,并且将减小输出大小。

如果使用ECB模式,则无需生成IV,因此请删除该方法的该部分。无需为系统随机数生成器添加不必要的工作。

$salt值实际上是键值,因此最好将其命名以避免混淆。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章