2016-08-28 3 views
1

Je tente de chiffrer un fichier à l'aide de ce programme dans QB64.Comment chiffrer un fichier dans QB64

Il ne crypte pas réellement le fichier et revient toujours avec succès. Pourquoi?

DECLARE LIBRARY 
    FUNCTION EncryptFile (f$) 
    FUNCTION DecryptFile (f$, BYVAL f&) 
END DECLARE 
PRINT "Enter filename"; 
INPUT f$ 
IF f$ <> "" THEN 
    f$ = f$ + CHR$(0) 
    x = EncryptFile(f$) 
    IF x = 0 THEN 
     PRINT "Error encrypting file." 
    ELSE 
     PRINT "File encrypted." 
    END IF 
END IF 
END 
+1

Il est évident que vous appelez correctement, il est donc question de savoir pourquoi votre code C++ ne fonctionne pas, pas pourquoi le code QB64 ne fonctionne pas. –

+0

Peu importe. Le fichier cible est en cours de cryptage: uniquement transparent pour l'utilisateur qui l'a crypté et ne voit aucun texte de type binaire. – eoredson

+0

J'ai écrit un utilitaire de chiffrement QB64 qui peut être trouvé ici: http://www.qb64.net/forum/index.php?action=dlattach;topic=13798.0;attach=4633 – eoredson

Répondre

0

La solution a été de détecter l'état de chiffrement d'un nom de fichier comme celui-ci:

REM checks encryption status of a filename 
DECLARE DYNAMIC LIBRARY "advapi32" 
    FUNCTION FileEncryptionStatusA% (f$, f&) 
END DECLARE 
DO 
    PRINT "Filename"; 
    INPUT f$ 
    IF f$ = "" THEN END 
    x = FileEncryptionStatusA(f$, f&) 
    IF x = 0 THEN 
     PRINT "Error accessing file." 
    END IF 
    IF x THEN 
     SELECT CASE f& 
      CASE 0 
       PRINT "File can be encrypted." 
      CASE 1 
       PRINT "File is encrypted." 
      CASE 2 
       PRINT "File is system." 
      CASE 3 
       PRINT "File is root." 
      CASE 4 
       PRINT "File is system directory." 
      CASE 5 
       PRINT "Encryption status unknown." 
      CASE 6 
       PRINT "File system does not support encryption." 
      CASE 7 ' reserved 
      CASE 8 
       PRINT "File is read-only." 
     END SELECT 
    END IF 
LOOP 
END