2016-08-28 13 views
1

QB64에서이 프로그램을 사용하여 파일을 암호화하려고 시도 중입니다.QB64에서 파일을 암호화하는 방법

실제로 파일을 암호화하지 않으며 항상 성공을 반환합니다. 왜?

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

그것은 당신의 C++ 코드가 작동하지 않는 이유의 문제 있도록, 제대로 전화하는거야, QB64 코드가 작동하지 않는 이유는 아닙니다. –

+0

Nevermind. 대상 파일이 암호화되고 있습니다 : 암호화 된 사용자에게만 투명하며 이진 형식의 텍스트는 보이지 않습니다. – eoredson

+0

여기 QB64 암호화 유틸리티를 작성했습니다 : http://www.qb64.net/forum/index.php?action=dlattach;topic=13798.0;attach=4633 – eoredson

답변

0

이 솔루션은 이와 같은 파일 이름의 암호화 상태를 감지했다 :

분명히
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