(zbyt długo na komentarze)
Artjom B. already provided the answer above. Artjom B. napisał:
Problem polega na dopełnieniu. Rozszerzenie PHP w PHP wykorzystuje tylko ZeroPadding [...] musisz albo umieścić tekst jawny w php [...] lub użyć innego szyfrowania w ColdFusion, takiego jak "DES/ECB/NoPadding". I polecam ten pierwszy, ponieważ jeśli używasz NoPadding, tekst jawny musi już być wielokrotnością rozmiaru bloku.
Niestety, trudno jest wyprodukować null character w CF. AFAIK, jedyną techniką, która działa, jest use URLDecode("%00")
. Jeśli nie możesz zmodyfikować kodu PHP jako sugerowanego @Artjom B., możesz spróbować użyć poniższej funkcji, aby umieścić tekst w CF.Zastrzeżenie: Jest tylko lekko testowane (CF10), ale wydawało się, że daje taki sam wynik jak powyżej.
Aktualizacja: Ponieważ funkcja CF szyfrowania() always interprets the plain text input as a UTF-8 string, można również użyć charsetEncode(bytes, "utf-8") aby utworzyć pusty znak z jednej tablicy elementem bajtów, czylicharsetEncode(javacast("byte[]", [0]), "utf-8")
Przykład:
Valor = nullPad("TESTE", 8);
Key = "[email protected]";
result = Encrypt(Valor, ToBase64(Key), "DES/ECB/NoPadding", "BASE64");
// Result: TzwRx5Bxoa0=
WriteDump("Encrypted Text = "& Result);
Funkcja:
/*
Pads a string, with null bytes, to a multiple of the given block size
@param plainText - string to pad
@param blockSize - pad string so it is a multiple of this size
@param encoding - charset encoding of text
*/
string function nullPad(string plainText, numeric blockSize, string encoding="UTF-8")
{
local.newText = arguments.plainText;
local.bytes = charsetDecode(arguments.plainText, arguments.encoding);
local.remain = arrayLen(local.bytes) % arguments.blockSize;
if (local.remain neq 0)
{
local.padSize = arguments.blockSize - local.remain;
local.newText &= repeatString(urlDecode("%00"), local.padSize);
}
return local.newText;
}
Osobisty, teraz działał idealnie w początkowym teście, zrobię kilka testów później, ale uważam, że rozwiązanie jest takie samo. Dziękujemy za pomoc i terminowość. Pomogła mi bardzo. Dzięki –
ArtjomB. zorientowałem się w prawdziwym problemie, ale cieszę się, że powyższe pomogło :) – Leigh
Oczywiście, pomógł dużo =] –