Merge pull request #1962 from fpirsch/master
fix incorrect padding with multibyte strings encryption
This commit is contained in:
commit
c878a18fdb
|
@ -116,7 +116,7 @@ protected static function iv_size()
|
||||||
*/
|
*/
|
||||||
protected static function pad($value)
|
protected static function pad($value)
|
||||||
{
|
{
|
||||||
$pad = static::$block - (Str::length($value) % static::$block);
|
$pad = static::$block - (strlen($value) % static::$block);
|
||||||
|
|
||||||
return $value .= str_repeat(chr($pad), $pad);
|
return $value .= str_repeat(chr($pad), $pad);
|
||||||
}
|
}
|
||||||
|
@ -128,15 +128,8 @@ protected static function pad($value)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected static function unpad($value)
|
protected static function unpad($value)
|
||||||
{
|
|
||||||
if (MB_STRING)
|
|
||||||
{
|
|
||||||
$pad = ord(mb_substr($value, -1, 1, Config::get('application.encoding')));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
$pad = ord(substr($value, -1));
|
$pad = ord(substr($value, -1));
|
||||||
}
|
|
||||||
|
|
||||||
if ($pad and $pad <= static::$block)
|
if ($pad and $pad <= static::$block)
|
||||||
{
|
{
|
||||||
|
@ -145,12 +138,7 @@ protected static function unpad($value)
|
||||||
// as the padding appears to have been changed.
|
// as the padding appears to have been changed.
|
||||||
if (preg_match('/'.chr($pad).'{'.$pad.'}$/', $value))
|
if (preg_match('/'.chr($pad).'{'.$pad.'}$/', $value))
|
||||||
{
|
{
|
||||||
if (MB_STRING)
|
return substr($value, 0, strlen($value) - $pad);
|
||||||
{
|
|
||||||
return mb_substr($value, 0, Str::length($value) - $pad, Config::get('application.encoding'));
|
|
||||||
}
|
|
||||||
|
|
||||||
return substr($value, 0, Str::length($value) - $pad);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the padding characters do not match the expected padding
|
// If the padding characters do not match the expected padding
|
||||||
|
|
Loading…
Reference in New Issue