2012-07-02 3 views
3

Qt를 사용하고 16 진수로 체크섬 값을 암호화/복호화하는 기존 방법이있는 소프트웨어를 사용 중입니다. 현재 base64에있는 체크섬 값을 발견했습니다. base64 체크섬에 대해 동일한 작업을 수행하기 위해 휠을 다시 작성하는 대신 Qt 또는 KDE를 사용하여 base64 값을 16 진 값으로 변환하는 방법이 있는지 궁금합니다. libs. 이 방법을 사용하면 거의 비슷한 작업을 수행하기 위해 세미 중복 코드를 작성하지 않아도됩니다. 여기Qt/KDE를 사용하여 base64 값을 16 진수 값으로 변환하는 방법은 무엇입니까?

는 그것이 작동하는 방법이다 :

Input: VO2S9pgCq1lqgTFTKssVj6amn0npNdagtjI8ziDtiRQ= 
Output: 54ed92f69802ab596a8131532acb158fa6a69f49e935d6a0b6323cce20ed8914 

입력은 QString에 포함되어 있습니다. 또한 Qt/KDE에 내장 된 지원이 없다면 C++에서 메서드를 제안 할 수 있습니까?

+0

"암호화"? –

+0

죄송합니다. 질문을 수정하겠습니다. – uyetch

답변

4

이 내가 지금 뭘하려 :

QString b64("VO2S9pgCq1lqgTFTKssVj6amn0npNdagtjI8ziDtiRQ="); 
QByteArray ba = QByteArray::fromBase64(b64.toAscii()); 

QString res(ba.toHex()); 

qDebug() << res; 

은 아마 그것을 할 수있는 더 정확한 방법이 있지만, 지금은 너무 졸려, 죄송합니다. 함수로

:

/// untested 
QString base64ToHex(const QString& b64){ 
    QByteArray ba = QByteArray::fromBase64(b64.toAscii()); 
    QString res(ba.toHex()); 

    return res;  
} 

하거나 ..

QString base64ToHex(const QString& b64){ 
    return QString(QByteArray::fromBase64(b64.toAscii()).toHex()); 
} 

편집 1 : Qt5 당신이 QString::toLatin1() 대신 QString::toAscii()을 사용해야합니다.