Ich muss Dinge von C# zu PHP neu erstellen. Ich weiß nicht wirklich, was ich tun soll, weil ich nie wirklich mit Dingen wie Verschlüsselung oder so etwas zu tun hatte.DES Verschlüsselung von C# zu PHP funktioniert nicht wie erwartet
In C# habe ich dies:
public static byte[] decrypt(byte[] data, byte[] key)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = key;
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.None;
return des.CreateDecryptor().TransformFinalBlock(data, 0, data.Length);
}
public static byte[] encrypt(byte[] data, byte[] key)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = key;
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.None;
return des.CreateEncryptor().TransformFinalBlock(data, 0, data.Length);
}
public static byte[] get8byte(string input)
{
byte[] ByteArray = new byte[8];
string tmp = string.Empty;
int j = 0;
for (int i = 0; i < 16; i++)
{
tmp = "" + input[i];
tmp = tmp + input[i + 1];
ByteArray[j] = byte.Parse(tmp, System.Globalization.NumberStyles.HexNumber);
j++;
i++;
}
return ByteArray;
}
und der Schlüssel i zu verwenden ist verschlüsselt wie folgt aus:
var Buffer = new char[16];
var cMasterKey = new byte[8];
byte[] Key = {
(byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5',
(byte) '6', (byte) '7', (byte) '8'
};
cMasterKey = DESUtils.get8byte(new string(Buffer));
MasterKey = DESUtils.decrypt(cMasterKey, Key);
Der "Puffer" von einem USB-Laufwerk kommt, die eine Datei hat Darauf befindet sich ein Masterkey von 16 Chars. Ich weiß wirklich nicht, wie man es in PHP realisiert. Ich habe viele Dinge wie Pack ('C *', $ Var) und solche Sachen ausprobiert, aber ich habe nicht das gleiche Ergebnis bekommen. Gibt es hier jemanden, der weiß, wie man damit umgeht? Ich weiß nicht, ob ich auf dem richtigen Weg bin, aber ich versuchte, Dinge wie diese:
$key = pack('C*', 1, 2, 3, 4, 5, 6, 7, 8);
$masterbyte = pack('C*', $buffer);
$decmasterkey = mcrypt_decrypt(MCRYPT_DES, $key, $masterbyte, MCRYPT_MODE_ECB);
Übernehmen Sie die Annahme von Antworten, die hilfreich sind. Um eine Antwort zu akzeptieren, klicken Sie auf das hohle Häkchen neben der Antwort, die am besten ist. Dadurch erhöhen Sie Ihre Reputation und ermöglichen mehr Funktionen. Siehe [Ruf-FAQ] (http://stackoverflow.com/faq#reputation). Diese Seite] (http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work) für weitere Details. – zaph