Ob Du einen "String" verschlüsselst oder eine Date ist, geneu genommen, kein Unterschied. bei der Datei wird ja der Dateininhalt verschlüsselt. Also ein "String".
Dein Wollen:
Du willst mit PHP einen String erzeugen und in eine Datei schreiben.
Dann willst Du die Datei verschlüsseln, das Original löschen.
Dann willst Du die verschlüsselte Datei zum Download anbieten.
Dann willst Du die Datei löschen.
Mein Vorschlag:
Du solltest (meinetwegen) mit PHP einen String erzeugen.
Du sollst den String noch im Arbeitsspeicher verschlüsseln.
Du sollst den verschlüsselten String direkt zum Empfänger senden.
Du sollst also eine Menge Umwege und Mühen sparen.
Sodala taucht eben genau das Problem auf, was ich nicht verstehe: "openssl enc ... file.enc" - ich muss ein FILE.enc angeben!
Ja. Das ist die Entschlüsselung der heruntergeladenen Datei auf dem Host des Empfängers.
Wo ist also das Problem? Weist Du nicht, was Du willst?
Wenn Du GAR KEINE Datei haben willst, dann nimm HTTPS. Allerdings kann dann jeder zugreifen, das ist nur eine Transportverschlüsselung zwischen dem Server und beliebigen Clients.
Willst Du nur für einen bestimmten Empfänger verschlüsseln, dann handle mit ihm das Passwort (Das kann auch eine Datei sein!) aus oder besorge Dir seinen öffentlichen PGP-Schlüssel und gib ihm Deinen öffentlichen PGP-Schlüssel. Freilich musst Du dann statt openSSL gpg oder pgp benutzen und für das Verschlüsseln einen Schlüssel nehmen, der KEINE Passworteingabe erfordert und Deinen Schlüssel (private key) auf dem Server speichern.