PHP에서 Base64 인코딩 하고 C#에서 디코딩
첫번째는 단순히 Base64 인코딩을 C#에서 디코딩하는 코드
두번째는 hash_hmac(‘sha256’) 함수를 이용하여 PHP에서 인코딩하고 C#에서 디코딩 하는 코드
Just Base 64 Encoding
PHP Code
$phpEncodingString = "AAAAAA" . "|" . "BBBBBB";
echo base64_encode($phpEncodingString );
//output -> QUFBQUFBfEJCQkJCQg==
C# Code
string fromPHPencodingString = "QUFBQUFBfEJCQkJCQg==";
byte[] byte64 = Convert.FromBase64String(fromPHPencodingString);
string decodingString = Encoding.UTF8.GetString(byte64);
Console.WriteLine("Result: {0}", decodingString);
//output -> Result: AAAAAA|BBBBBB
Base 64 Encoding with hash_hmac(‘sha256’)
PHP Code
$key = "AAAAA";
$message = "BBBBB";
$hashString = hash_hmac('sha256', $message, $key);
echo base64_encode(strtoupper($hashString ));
//output -> NjZDNTc2NTBCODhBMzcyNTFDMjgzNzA1QkUwNUJEOEI0MDNDMUU3QzMwMjEzRkQ1MkIwNjI3QTJFMjAzQjY2RA==
C# Code
string key = "AAAAA";
string messeage = "BBBBB";
var keyByte = encoding.GetBytes(key);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
hmacsha256.ComputeHash(encoding.GetBytes(message));
MessageBox.Show(ByteToString(hmacsha256.Hash));
string fromPHPencodingString = ByteToString(hmacsha256.Hash);
byte[] basebyte = System.Text.Encoding.UTF8.GetBytes(fromPHPencodingString);
string base64String = Convert.ToBase64String(basebyte);
MessageBox.Show(String.Format("Result: {0}", base64String));
}
static string ByteToString(byte[] buff)
{
string sbinary = "";
for (int i = 0; i < buff.Length; i++)
sbinary += buff[i].ToString("X2"); /* hex format */
return sbinary;
}
//output -> NjZDNTc2NTBCODhBMzcyNTFDMjgzNzA1QkUwNUJEOEI0MDNDMUU3QzMwMjEzRkQ1MkIwNjI3QTJFMjAzQjY2RA==
단순 Base64 인코딩은 디코딩 할 경우 문자가 그대로 복원이 되지만 hash_hmac(‘sha256’) 함수를 이용할 경우 원래의 문자열 복구 불가능하므로 인코딩 된 결과물을 바탕으로 비교하여 True / False 구분해야합니다.
끝
목차