Я пытаюсь реорганизовать какой-то старый код, который использует функции ssh2_sftp, в библиотеку phpseclib.
Однако я не смог найти эквивалент для функции ssh2_fingerprint, точнее, для ее алгоритма хэширования. Вы можете получить ключ хоста с сервера, но я вроде не правильно понимаю хеширование.
Может ли кто-нибудь предоставить что-нибудь полезное здесь?
оригинал
ssh2_fingerprint($connection, SSH2_FINGERPRINT_SHA1 | SSH2_FINGERPRINT_HEX);
Новый код (возможно)
hash('HOW?', $Net_SFTP->getServerPublicHostKey());
Или это все-таки не так?
https://github.com/phpseclib/libssh2-compatibility-layer делает то, что вы пытаетесь сделать. Вот это реализация ssh2_fingerprint
:
function ssh2_fingerprint($session, $flags = 0)
{
$hostkey = substr($session->getServerPublicHostKey(), 8);
$hostkey = ($flags & 1) ? sha1($hostkey) : md5($hostkey);
return ($flags & 2) ? pack('H*', $hostkey) : strtoupper($hostkey);
}
Других решений пока нет …