我如何将此 SHA256 + BASE64 从 Swift 转换为 PHP?

How so I convert this SHA256 + BASE64 from Swift to PHP?

我得到了这个 Swift 代码来尝试在 PHP 中工作:

finalStr = Encryption.sha256(inputStr)

...

    class Encryption {
        static func sha256(_ data: Data) -> Data? {
            guard let res = NSMutableData(length: Int(CC_SHA256_DIGEST_LENGTH)) else { return nil }
            CC_SHA256((data as NSData).bytes, CC_LONG(data.count), res.mutableBytes.assumingMemoryBound(to: UInt8.self))
            return res as Data
        }

        static func sha256(_ str: String) -> String? {
            guard
                let data = str.data(using: String.Encoding.utf8),
                let shaData = Encryption.sha256(data)
                else { return nil }
            let rc = shaData.base64EncodedString(options: [])
            return rc
        }
    }

我在 PHP 中执行了以下操作,但最终结果不匹配:

$hashedStr = hash('sha256', $inputStr);
$finalStr = base64_encode($hashedStr);
echo $finalStr;

我在 PHP 方面缺少什么?

您应该为 PHP 中的 hash 方法将原始输出设置为真。注意 hash

中的第三个方法参数
$hashedStr = hash('sha256', $inputStr, true);
$finalStr = base64_encode($hashedStr);
echo $finalStr;

这样,来自 PHP 的 base64_encoded 原始值应该等于您从 base64EncodedString

获得的原始值