Две вещи ...
- Вы делаете
dgst
(дайджест) при первом вызове openssl
, поэтому вы не можете позвонить openssl_encrypt
в своем php. - При выполнении дайджеста вам не нужны случайные байты.
Существует как минимум 2 способа сделать это в php
1) Использование функции sha1
php -r "var_dump(base64_encode(pack('H*', sha1('testPass1234'))));"
string(28) "wW+fqYWyUoXq+c76j0j2mnD5Oyc="
2) Использование функции openssl_digest
php -r "var_dump(base64_encode(pack('H*', openssl_digest('testPass1234', 'SHA1'))));"
string(28) "wW+fqYWyUoXq+c76j0j2mnD5Oyc="
Они оба будут возвращать одно и то же.Строка, возвращаемая из sha1
, будет упакована в строку реальных битов и не будет рассматриваться как строка.
PS: я видел, что вы пропустили другую строку в образце командной строки и образце php, но всякий раз, когда передавалита же строка, результаты будут одинаковыми.
echo -n testPass1234 | openssl dgst -sha1 -binary | openssl enc -base64
wW+fqYWyUoXq+c76j0j2mnD5Oyc=
Надеюсь, это то, что вы ищете.Ура!