寻找简单的PHP多路加密方法

寻找简单的PHP多路加密方法,php,key,encryption,Php,Key,Encryption,我需要借助一个秘密静态密钥解密加密的POST-value字符串 我已经研究了crypt()(但它只是单向的)和Mcrypt,GnuPG,。。。但我对他们不满意。我认为对于我这个简单的问题来说,它们太复杂了。我应该用什么?我不需要IV形状或超级安全的算法。有没有我还不知道的基本PHP函数 我只需要对用户隐藏图像路径,如下所示: ImageJPEG(ImageCreateFromJPEG(解码($_请求['encryptedImage'],'secret Key')) 您可以将内置函数包装起来,使它

我需要借助一个秘密静态密钥解密加密的POST-value字符串

我已经研究了crypt()(但它只是单向的)和Mcrypt,GnuPG,。。。但我对他们不满意。我认为对于我这个简单的问题来说,它们太复杂了。我应该用什么?我不需要IV形状或超级安全的算法。有没有我还不知道的基本PHP函数

我只需要对用户隐藏图像路径,如下所示:
ImageJPEG(ImageCreateFromJPEG(解码($_请求['encryptedImage'],'secret Key'))

您可以将内置函数包装起来,使它们更友好。与文档页面上的第二篇用户帖子类似:


您可以将内置函数包装起来,使其更加友好。与文档页面上的第二篇用户帖子类似:


更新(2017年9月27日): 自PHP 7.1.0以来,已弃用。我添加了一个简单的加密/解密使用

原始答案:

再简单不过了:(PHP<7.1.0):

<?php 
define('SECRET',md5('Some secret key'));

function encrypt($value){
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, SECRET, $value, MCRYPT_MODE_ECB, $iv);
}

function decrypt($value){
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, SECRET, $value, MCRYPT_MODE_ECB, $iv));
}

?>

更新(2017年9月27日): 自PHP 7.1.0以来,已弃用。我添加了一个简单的加密/解密使用

原始答案:

再简单不过了:(PHP<7.1.0):

<?php 
define('SECRET',md5('Some secret key'));

function encrypt($value){
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, SECRET, $value, MCRYPT_MODE_ECB, $iv);
}

function decrypt($value){
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, SECRET, $value, MCRYPT_MODE_ECB, $iv));
}

?>

这是我所知道的唯一基本内置函数

$string = "/path/img.jpg";

$scramble = str_rot13($string);

echo "<p>Scrambled: ".$scramble;

echo "<p>Unscrambled: ".str_rot13($scramble);
$string=“/path/img.jpg”;
$scramble=str_rot13($string);
回声“scramble:”.$scramble;
echo“解读:“.str_rot13($scramble);

这是我所知道的唯一基本内置函数

$string = "/path/img.jpg";

$scramble = str_rot13($string);

echo "<p>Scrambled: ".$scramble;

echo "<p>Unscrambled: ".str_rot13($scramble);
$string=“/path/img.jpg”;
$scramble=str_rot13($string);
回声“scramble:”.$scramble;
echo“解读:“.str_rot13($scramble);

simple Mcrypt解决方案:函数simple_encrypt($text,$salt){返回trim(base64_encode(Mcrypt_RIJNDAEL_256,$salt,$text,Mcrypt_MODE_ECB,Mcrypt_create_iv(Mcrypt_get_iv_size(Mcrypt_RIJNDAEL_256,Mcrypt_MODE_ECB,$salt));}函数simple_($text,$salt){返回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));}简单的mcrypt解决方案:函数简单加密($text,$salt){返回修剪(base64_encode(mcrypt_encode)(MCRYPT_RIJNDAEL_256,$salt,$text,MCRYPT_MODE_ECB,MCRYPT_create_iv)(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB,MCRYPT_RAND));)函数简单解密($text,$salt){返回修剪(MCRYPT_decrypt(MCRYPT_decrypt,$salt,base64_decode($text),MCRYPT_MODE_,MCRYPT_创建ECB_大小(MCRYPT_四)(麦克里普特·里恩代尔256,麦克里普特模式欧洲央行,麦克里普特·兰德));}@Tom是的,我只是建议OP隐藏图像路径,我不认为只要看一个字符串,你就会立刻知道它通过stru rot13。我建议编写自己的旋转函数,但我认为我会建议最基本的选项。@Tom是的,我只是建议OP隐藏图像路径,我不认为是从只要看一个字符串,你就会立刻知道它是通过str_rot13传递的。我建议编写自己的旋转函数,但我认为我会建议最基本的选项。也不会比它更容易受到攻击。让我们看看。使用ECB(大不可以)。使用Rijndael 256而不是128(这将是AES).不验证。不填充。是的。所以不…不要这样做。只需使用库(
Zend\Crypt\BlockCipher
是一个很好的选择)。解密此:
U09DUlR5TllGbXNKdVRWVHg2ZnNCQT09
,使用上述函数。也不会比它更容易受到攻击。让我们看看。使用ECB(大的否)。使用Rijndael 256而不是128(这将是AES)。不验证。不填充。是的。所以不…不要这样做。只需使用库(
Zend\Crypt\BlockCipher
是一个很好的选择)。使用上述函数解密:
U09DUlR5TllGbXNKdVRWVHg2ZnNCQT09