vendor/braintree/braintree_php/lib/Braintree/Digest.php
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
// phpcs:disable
namespace Braintree;
/**
* Digest encryption module
* Digest creates an HMAC-SHA1 hash for encrypting messages
*/
class Digest
{
public static function hexDigestSha1($key, $string)
{
if (function_exists('hash_hmac')) {
return self::_builtInHmacSha1($string, $key);
} else {
return self::_hmacSha1($string, $key);
}
}
public static function hexDigestSha256($key, $string)
{
return hash_hmac('sha256', $string, hash('sha256', $key, true));
}
public static function secureCompare($left, $right)
{
if (strlen($left) != strlen($right)) {
return false;
}
$leftBytes = unpack("C*", $left);
$rightBytes = unpack("C*", $right);
$result = 0;
for ($i = 1; $i <= count($leftBytes); $i++) {
$result = $result | ($leftBytes[$i] ^ $rightBytes[$i]);
}
return $result == 0;
}
public static function _builtInHmacSha1($message, $key)
{
return hash_hmac('sha1', $message, sha1($key, true));
}
public static function _hmacSha1($message, $key)
{
$pack = 'H40';
$keyDigest = sha1($key, true);
$innerPad = str_repeat(chr(0x36), 64);
$outerPad = str_repeat(chr(0x5C), 64);
for ($i = 0; $i < 20; $i++) {
$innerPad[$i] = $keyDigest[$i] ^ $innerPad[$i];
$outerPad[$i] = $keyDigest[$i] ^ $outerPad[$i];
}
return sha1($outerPad . pack($pack, sha1($innerPad . $message)));
后面还有 3 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
