Skip to content

fix up padding length #3

Description

@fengzhongzhu1621

--- phpcrypt/Mode.php   (333)
+++ phpcrypt/Mode.php   (334)
@@ -291,9 +291,10 @@
        // now determine the next multiple of blockSize(), then find
        // the difference between that and the length of $str,
        // this is how many padding bytes we will need
-       $num = ceil($len / $bytes) * $bytes;
-       $num = $num - $len;
-
+       //$num = ceil($len / $bytes) * $bytes;
+       //$num = $num - $len;
+       $num = $bytes - ($len % $bytes);
+       
        Padding::pad($str, $num, $this->padding);
        return true;
    }

test_demo.php
<?php
include_once("phpcrypt-0.5.1/phpCrypt.php");
use PHP_Crypt\PHP_Crypt as PHP_Crypt;

$key  = "1111111111111111";

$crypt = new PHP_Crypt($key, PHP_Crypt::CIPHER_RIJNDAEL_128, PHP_Crypt::MODE_ECB, PHP_Crypt::PAD_PKCS7);

$a = array(
            '1',
            '12',
            '123',
            '1234',
            '12345',
            '123456',
            '1234567',
            '12345678',
            '123456789',
            '1234567890',
            '1234567890A',
            '1234567890AB',
            '1234567890ABC',
            '1234567890ABCD',
            '1234567890ABCDE',
            '1234567890ABCDEF',
            '1234567890ABCDEFa',
            '1234567890ABCDEFab',
            '1234567890ABCDEFabc',
            '1234567890ABCDEFabcd',
            '1234567890ABCDEFabcde',
            '1234567890ABCDEFabcdef',
);

$b = array();
foreach($a as $i) {
    #$crypt->IV($iv);
    #echo trim(base64_encode(($crypt->encrypt(strToHex($i))))) . PHP_EOL;
    $encrypt = base64_encode(($crypt->encrypt($i)));
    $b[] = $encrypt;
    echo $encrypt . PHP_EOL;
}

The result:

fFGQn5XB6biGo0h80+vtaQ==
5uouaKX+YwLAD5tWLMwSYw==
XtRDz3Z8+6VwWb4WUIqGBQ==
Zkq5wW2IpVjcx/M/XSRotg==
mYJBuGe/HWIkpa534v+0bg==
wflYk5saIuyUdCjuOkX6NQ==
wafZEL/l6k3GvmCV2M+88g==
StSCw3MWJc0h1DBzw8O00g==
4DTkUmCJxSBw4tSYiEMEJA==
9bGjQnT3aYeXIcRgu/Vf4Q==
dH5xIqxAOY4+AAE13aeCPg==
tRVE3M6URs+OnT+5X4TJaQ==
GtMSaaAJZmJXCl4cmXftdg==
0GzqRf9WjEZzmVpUoF5SWw==
4UEpGmtgWgYgUFi48piZuw==
QVjc0M5lqYuBItzjOIX0ofMMacT5ReZU69SziLHI95A=
QVjc0M5lqYuBItzjOIX0oRC/sxaeSwiVCRYDtcfRSzU=
QVjc0M5lqYuBItzjOIX0oVy8bOJ66ehQC+WUfXHVT3A=
QVjc0M5lqYuBItzjOIX0oZobDT3o92inV1KTxggMGME=
QVjc0M5lqYuBItzjOIX0ocI2JWgP3EbOyG521WXPUUQ=
QVjc0M5lqYuBItzjOIX0of3Mpn1KHVjBNWSAr5cf71E=
QVjc0M5lqYuBItzjOIX0oaW1GHLp78FkEMBcxTwad4c=

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions