file_md5.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include <qsettings.h>
  2. #include <qfiledialog.h>
  3. #include <qtextstream.h>
  4. #include <qfile.h>
  5. #include <QTextCodec>
  6. #include <QCryptographicHash>
  7. #include "file_md5.h"
  8. void file_md5(QString fileName)
  9. {
  10. if (fileName.isEmpty())
  11. {
  12. return;
  13. }
  14. QByteArray bytes;
  15. QByteArray byte_md;
  16. QFile qfile_in(fileName);
  17. //读到文件数据
  18. qfile_in.setFileName(fileName);
  19. if (!qfile_in.open(QIODevice::ReadOnly))
  20. {
  21. return;
  22. }
  23. bytes.clear();
  24. bytes=qfile_in.readAll();
  25. qDebug("read size=%d\n",bytes.size());
  26. qfile_in.close();
  27. //生成输出文件名
  28. QString out_fileName = fileName.replace(".bin", "_IAP.bin");
  29. QFile qfile_out(out_fileName);
  30. qfile_out.setFileName(out_fileName);
  31. //qDebug("%s", fileName.toUtf8());
  32. //打开输出文件
  33. if (!qfile_out.open(QIODevice::WriteOnly))
  34. {
  35. return;
  36. }
  37. qDebug("write size=%d\n",bytes.size());
  38. //将原始文件写入到输出文件
  39. qfile_out.write(bytes);
  40. //清空校验值
  41. byte_md.clear();
  42. //生成校验值
  43. byte_md = QCryptographicHash::hash(bytes, QCryptographicHash::Md5);
  44. qDebug("md5 size=%d\n",byte_md.size());
  45. //将校验值追加文件尾部
  46. qfile_out.write(byte_md);
  47. //关闭文件
  48. qfile_out.close();
  49. }