diff --git a/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/HashingServiceApplication.java b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/HashingServiceApplication.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e35bd1d33a191bc338682b34722b2f28f17e7e9
--- /dev/null
+++ b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/HashingServiceApplication.java
@@ -0,0 +1,11 @@
+package eu.fairkom.faircommons.hashing_service;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class HashingServiceApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(HashingServiceApplication.class, args);
+    }
+}
diff --git a/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/config/HashingServiceConfiguration.java b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/config/HashingServiceConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..962c93e35210a87c6d7e0b34c7ac7bc5959bf6d7
--- /dev/null
+++ b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/config/HashingServiceConfiguration.java
@@ -0,0 +1,11 @@
+package eu.fairkom.faircommons.hashing_service.config;
+
+import eu.fairkom.faircommons.common.rabbitmq.RabbitMqConfiguration;
+import org.springframework.amqp.rabbit.annotation.EnableRabbit;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ComponentScan(basePackageClasses = RabbitMqConfiguration.class)
+public class HashingServiceConfiguration {
+}
diff --git a/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingService.java b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingService.java
new file mode 100644
index 0000000000000000000000000000000000000000..aec3622c0ce351d915ff54b3f2969d446e93066e
--- /dev/null
+++ b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingService.java
@@ -0,0 +1,35 @@
+package eu.fairkom.faircommons.hashing_service.service;
+
+import org.springframework.stereotype.Service;
+
+import java.io.InputStream;
+import java.security.DigestInputStream;
+import java.security.MessageDigest;
+
+@Service
+public class HashingService {
+
+    public String getChecksum(InputStream inputStream, String algorithm) {
+        try {
+            var messageDigest = MessageDigest.getInstance("SHA-256");
+
+            try (InputStream is = inputStream) {
+                var digestInputStream = new DigestInputStream(is, messageDigest);
+                while (digestInputStream.read() != -1) ; //empty loop to clear the data
+                messageDigest = digestInputStream.getMessageDigest();
+            }
+
+            return bytesToHex(messageDigest.digest());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private String bytesToHex(byte[] bytes) {
+        StringBuilder sb = new StringBuilder();
+        for (byte b : bytes) {
+            sb.append(String.format("%02x", b));
+        }
+        return sb.toString();
+    }
+}
diff --git a/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingServiceReceiver.java b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingServiceReceiver.java
new file mode 100644
index 0000000000000000000000000000000000000000..54f2da46ce024f054150e92a174c8a5a008f8c12
--- /dev/null
+++ b/faircommons-services/hashing-service/src/main/java/eu/fairkom/faircommons/hashing_service/service/HashingServiceReceiver.java
@@ -0,0 +1,27 @@
+package eu.fairkom.faircommons.hashing_service.service;
+
+import eu.fairkom.faircommons.common.rabbitmq.RabbitMqReceiver;
+import eu.fairkom.faircommons.common.rabbitmq.message.HashingMessage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.stereotype.Component;
+
+import static eu.fairkom.faircommons.common.rabbitmq.RabbitMqConfiguration.HASHING_QUEUE;
+
+@Component
+@RabbitListener(queues = HASHING_QUEUE)
+public class HashingServiceReceiver implements RabbitMqReceiver<HashingMessage> {
+    private final HashingService hashingService;
+
+    public HashingServiceReceiver(HashingService hashingService) {
+        this.hashingService = hashingService;
+    }
+
+    private final Logger logger = LoggerFactory.getLogger(HashingServiceReceiver.class);
+
+    @Override
+    public void receive(HashingMessage message) {
+        logger.info("Message received: " + message.toString());
+    }
+}
diff --git a/faircommons-services/hashing-service/src/main/resources/application-local.yml b/faircommons-services/hashing-service/src/main/resources/application-local.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7f59de91baf53c56144d74a1bb2e1619a4e02d0f
--- /dev/null
+++ b/faircommons-services/hashing-service/src/main/resources/application-local.yml
@@ -0,0 +1,6 @@
+spring:
+  rabbitmq:
+    host: localhost
+    username: user
+    password: password
+    port: 5672
\ No newline at end of file
diff --git a/faircommons-services/hashing-service/src/main/resources/application.yml b/faircommons-services/hashing-service/src/main/resources/application.yml
new file mode 100644
index 0000000000000000000000000000000000000000..90612549ba465a1da4d231d5c2a3211407e5a0bf
--- /dev/null
+++ b/faircommons-services/hashing-service/src/main/resources/application.yml
@@ -0,0 +1,8 @@
+spring:
+  application:
+    name: hashing-service
+
+server:
+  port: 8081
+  servlet:
+    context-path: /${spring.application.name}
\ No newline at end of file