我如何将此 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
获得的原始值
我得到了这个 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