Update 4
Per Gregs Vorschlag habe ich ein Bild / Text-Paar erstellt, das die Ausgabe von einem 37k-Bild zu base64-codiert mit 100k Chunks zeigt. Da die Datei nur 37k groß ist, kann man sagen, dass die Schleife nur einmal durchlaufen wurde, also wurde nichts angefügt. Das andere Paar zeigt die Ausgabe von dem gleichen 37k-Bild zu base64-codiert unter Verwendung von 10k Chunks. Da die Datei 37k groß ist, wurde die Schleife viermal wiederholt, und die Daten wurden definitiv angehängt.
Ein Vergleich der beiden Dateien zeigt, dass in der 10kb Chunk-Datei ein großer Unterschied besteht, der in Zeile 214 beginnt und in Zeile 640 endet.
Update 3
Hier ist mein Code jetzt. Etwas aufgeräumt, aber immer noch den gleichen Effekt:
Update 2
Es sieht also so aus, als würden Dateien, die größer als 100 KB sind, verschlüsselt, aber Dateien unter 100 KB sind in Ordnung. Es ist offensichtlich, dass etwas auf meinem Puffer / Mathe / etc ist, aber ich bin auf diesem einen verloren. Könnte Zeit sein, es einen Tag zu nennen, aber ich würde gerne mit dieser Lösung schlafen gehen.
Hier ein Beispiel:
Update 1
Nach einigen Tests habe ich festgestellt, dass der gleiche Code für ein kleines Bild funktioniert, aber nicht für ein großes Bild oder Video jeder Größe funktioniert. Sieht definitiv wie ein Pufferproblem aus, nicht wahr?
Hey, ich versuche, eine große Datei zu codieren, indem ich einen kleinen Block nach dem anderen durchbinge. Alles scheint zu funktionieren, aber die Dateien werden immer beschädigt. Ich war neugierig, ob irgendjemand darauf hinweisen könnte, wo ich hier falsch liege:
%Vor%Ich wünschte, ich könnte GregInYEG meine Anerkennung aussprechen, denn sein ursprünglicher Punkt über das Padding war das zugrunde liegende Problem. Bei base64 muss jeder Chunk ein Vielfaches von 3 sein. Damit wurde das Problem gelöst:
%Vor%Sobald ich das hatte, ging die Korruption weg. Aber dann stieß ich auf Probleme mit dem Speicherleck, also fügte ich die Autorelease-Pool-Apprach aus diesem Beitrag hinzu: Ссылка
Endgültiger Code:
%Vor%Tags und Links objective-c iphone base64 nsfilehandle nsdata