diff --git a/cmake/FindArgon2.cmake b/cmake/FindArgon2.cmake
index 8378ebd54..5f196fc8d 100644
--- a/cmake/FindArgon2.cmake
+++ b/cmake/FindArgon2.cmake
@@ -14,8 +14,21 @@
# along with this program. If not, see .
find_path(ARGON2_INCLUDE_DIR argon2.h)
-find_library(ARGON2_LIBRARIES argon2)
+if (MINGW)
+ # find static library on Windows, and redefine used symbols to
+ # avoid definition name conflicts with libsodium
+ find_library(ARGON2_SYS_LIBRARIES libargon2.a)
+ message(STATUS "Patching libargon2...")
+ execute_process(COMMAND objcopy
+ --redefine-sym argon2_hash=libargon2_argon2_hash
+ --redefine-sym argon2_error_message=libargon2_argon2_error_message
+ ${ARGON2_SYS_LIBRARIES} ${CMAKE_BINARY_DIR}/libargon2_patched.a
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+ find_library(ARGON2_LIBRARIES libargon2_patched.a PATHS ${CMAKE_BINARY_DIR} NO_DEFAULT_PATH)
+else()
+ find_library(ARGON2_LIBRARIES argon2)
+endif()
mark_as_advanced(ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)
include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Argon2 DEFAULT_MSG ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)
\ No newline at end of file
+find_package_handle_standard_args(Argon2 DEFAULT_MSG ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)
diff --git a/src/crypto/argon2/argon2.h b/src/crypto/argon2/argon2.h
new file mode 100644
index 000000000..8ea6108aa
--- /dev/null
+++ b/src/crypto/argon2/argon2.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 KeePassXC Team
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef KEEPASSXC_CRYPTO_ARGON2_H
+#define KEEPASSXC_CRYPTO_ARGON2_H
+
+/*
+ Argon2 wrapper header with redefined symbols to be used with the
+ patched libargon2 binary which is generated by the build system.
+ This is to avoid link-time definition clashes with libsodium on Windows.
+ */
+
+#ifdef Q_OS_WIN
+#define argon2_hash libargon2_argon2_hash
+#define argon2_error_message libargon2_argon2_error_message
+#endif
+
+#include
+
+#endif //KEEPASSXC_CRYPTO_ARGON2_H
diff --git a/src/crypto/kdf/Argon2Kdf.cpp b/src/crypto/kdf/Argon2Kdf.cpp
index cd8474056..f67c9c1fb 100644
--- a/src/crypto/kdf/Argon2Kdf.cpp
+++ b/src/crypto/kdf/Argon2Kdf.cpp
@@ -18,8 +18,8 @@
#include "Argon2Kdf.h"
#include
-#include
+#include "crypto/argon2/argon2.h"
#include "format/KeePass2.h"
/**