php 和 c# 都产生不同的密钥,这使得我的 c# 编码软件很难激活。我有在 c# 上编码的软件,并试图通过 PHP 生成自动密钥。请帮帮我。这是我分享的代码
在c#中
public string GetEncryptedEmail(string strEmailAdd, int iHashCode)
{
char c = (char)iHashCode;
int length = strEmailAdd.Length;
char[] array = new char[length];
for (int i = 0; i < length; i++)
{
array[i] = (char)(strEmailAdd[i] ^ c);
}
byte[] bytes = Encoding.UTF8.GetBytes(array);
string mD5Hash = GetMD5Hash(bytes);
if (mD5Hash.Length <= 0)
{
return "";
}
return mD5Hash;
}
public string GetMD5Hash(byte[] byteInput)
{
try
{
byte[] array = new MD5CryptoServiceProvider().ComputeHash(byteInput);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < array.Length; i++)
{
stringBuilder.Append(array[i].ToString("X2"));
}
return stringBuilder.ToString();
}
catch (Exception arg)
{
return "";
}
}
在 PHP 中 -
function getEncryptedEmail($strEmailAdd, $iHashCode) {
$c = chr($iHashCode);
$length = strlen($strEmailAdd);
$array = array();
for ($i = 0; $i < $length; $i++) {
$array[$i] = chr(ord($strEmailAdd[$i]) ^ ord($c));
}
$bytes = utf8_encode(implode('', $array));
$mD5Hash = md5($bytes);
if (strlen($mD5Hash) <= 0) {
echo "Error in product activation.";
return "";
}
return $mD5Hash;
}
附加信息-
我只能更改我的PHP代码。
无法更改我的 C# 代码。
两者给出不同的结果