PHPのSHA256変換について
C#で以下のロジックがあるのですが、
using System.Text;
using System.Security.Cryptography;
private static string getHash(string data, string salt, int stretchingcount, Encoding encode)
{
int m = salt.Length / 2;
string tmp = salt.Substring(0, m) + data + salt.Substring(m);
byte[] buf = encode.GetBytes(tmp);
SHA256CryptoServiceProvider algorithm = new SHA256CryptoServiceProvider();
for (int i = 0; i < stretchingcount; ++i)
{
buf = algorithm.ComputeHash(buf);
}
return BitConverter.ToString(buf).Replace("-", string.Empty);
}
こちらのソースをPHPで同じ結果になるように実装したいのですが、
同じ結果にならず、困っています。
PHP側のソースは以下の通りです。
public static function funcPrivacyCheck($data,$salt,$stretchingcount){
$m = strlen($salt) / 2;
$tmp = substr($salt,0,$m).$id.substr($salt,$m);
$tmp = base64_encode(utf8_encode($tmp));
$hash = '';
for ($i = 0; $i < $stretchingcount; $i++) {
if($hash <> ''){
$hash = hash_hmac('sha256' ,$hash, false);
}else{
$hash = hash_hmac('sha256' ,$tmp, false);
}
}
return $hash;
}
エンコードは、UTF-8を指定することが前提です。
ご教授頂きますようよろしくお願いいたします。