2016-06-05 2 views
2

매우 간단한 암호화/해독 프로그램이 있습니다. 암호화가 끝나면 내 프로그램은 암호화 된 텍스트를 QByteArray로 반환하여 텍스트 파일에 저장합니다. 암호 해독 파일에서이 ByteArray를 검색 할 때 내 암호화가 제대로 포맷하거나 파일이 여기에 \nQt C++ QByteArray를 파일에 암호화 된 텍스트로 저장 한 다음 QByteArray로 읽고 다시 포맷하는 방법

같은 추가 문자의 어떤 종류를 추가하는 경우 잘 모르겠어요/기능을 해독 :

void Handler::updatePMEF(QString format) { 

    SimpleCrypt crypto(Q_UINT64_C(0x0c2ad4a4acb9f023)); 
    QString result = crypto.encryptToByteArray(format); 

    QFile file("C:/test.txt"); 
    if (file.open(QIODevice::ReadWrite)) { 
     QTextStream stream(&file); 
     stream << result << endl; 
    } 
} 

QString Handler::openPMEF() { 
    QByteArray encrypted; 

    QFile file("C:/test.txt"); 
    if (file.open(QIODevice::ReadOnly)) { 
     encrypted = file.readAll(); 
    } 

    SimpleCrypt crypto(Q_UINT64_C(0x0c2ad4a4acb9f023)); 
    QString decrypted = crypto.decryptToByteArray(encrypted); 

    return decrypted; 
} 

openPMEF()을 호출 한 후 디버거에서 아무 것도 반환하지 않으므로 잘못된 것으로 생각됩니다.

나는 그것이 변환 것이라고 희망 QByteArray = encrypted을하고 노력하고 디버거가 반환하기 전에 :을 writting에 QTextStream을 사용하기 때문에

Decrypyted: ????\u00153C?????qW\f????\u00153\u0019????\u00153\u001C????\u0006 \u001C?????2\u0014\u001C????\f*v?????\u00153'?????\u0004\"~?D?\u0005?\u00153(???? \u0006\u001Cf???\u00153I?????dB2??\u00153\u001C????\u00153l?????-\u000B\u001C?????\u00153I?????\u00153\u001C????\u0018>\u001Cf???\u00153(?????jLa????\u00153\u0006?????\u001D;)????DbK????~X\u0010Ö???\u0001'\u001B?????rTl?????\u0005#Z????X~Q?????F`G???²\u001A<B???? \u0006G?????F`r????? \u0006 

답변

0

이 가장 높습니다. 예를 들어, 첫 번째 OES (\0)에서 중지 될 가능성이 높으며 crypted 데이터에는 많은 데이터가 포함될 수 있습니다.

직접 작성한 함수를 사용하여 QByteArray을 사용해야합니다.

사용을 writting보십시오이 :

file.write(result.toAscii()); 

내가 그 또한 읽기 /을 writting enciding이 다른 경우는, 코드에 실패 설명 할 수 (당신이 무엇을 사용해야 인코딩 확실하지 않다 당신은 가능한 모든를 시도 할 수 있습니다. :. 예상대로 result.toLatin1()result.toLocal8Bit(), result.toUtf8() 바라 건데, 하나는 작동

을 그건 그렇고, 어쩌면 QString은 처음에 데이터를 저장하도록 구성되지 않은 당신이 QByteArray

,536 돌아 SimpleCrypt::encryptToByteArray을 적용 할 수 없습니다..?를

편집 : 오프라인 논의 된 바와 같이, 최종 솔루션은 QByteArray 대신 내가 쓰기에 UTF-8로 변환 한

+0

(QString가 저장 문자열이 아닌 바이트 배열에 의미) QString (A)의를 반환하는 SimpleCrypt::encryptToByteArray을 수정했다 하지만 읽을 때 null이 반환됩니다. – James

+0

@JamieThirkell : 내 게시물의 편집을 참조하십시오. 먼저 결과를'QByteArray'로 변환하고 그 크기를 확인하여 파일에 뭔가를 쓰고 있는지 확인하십시오! – jpo38

+0

고마워, 조금 손을 흔들어서 나는 일하도록했다. – James