diff --git a/sifrovacka/forms.py b/sifrovacka/forms.py
index 3ae75cc1..1267848b 100644
--- a/sifrovacka/forms.py
+++ b/sifrovacka/forms.py
@@ -13,8 +13,8 @@ class SifrovackaForm(ModelForm):
 
 	def clean_sifra(self):
 		sifra = self.cleaned_data.get('sifra')
-		if SpravnaOdpoved.objects.filter(sifra=sifra).count() == 0:
-			raise ValidationError("Tohle číslo šifry v databázi nemáme. Zkontrolujte si ho prosím.")
+		if SpravnaOdpoved.objects.filter(sifra__iexact=sifra).count() == 0:
+			raise ValidationError("Tuhle šifru v databázi nemáme. Zkontrolujte si, že jste zadali název správně.")
 		return sifra
 
 
@@ -25,6 +25,6 @@ class NapovedaForm(ModelForm):
 
 	def clean_sifra(self):
 		sifra = self.cleaned_data.get('sifra')
-		if Napoveda.objects.filter(sifra=sifra).count() == 0:
-			raise ValidationError("K tomuto číslu šifry nemáme nápovědu. Zkontrolujte si ho prosím.")
+		if Napoveda.objects.filter(sifra__iexact=sifra).count() == 0:
+			raise ValidationError("K této šifře nemáme nápovědu. Zkontrolujte si, že jste zadali název správně.")
 		return sifra
diff --git a/sifrovacka/migrations/0007_alter_napoveda_sifra_and_more.py b/sifrovacka/migrations/0007_alter_napoveda_sifra_and_more.py
new file mode 100644
index 00000000..0212e3c4
--- /dev/null
+++ b/sifrovacka/migrations/0007_alter_napoveda_sifra_and_more.py
@@ -0,0 +1,33 @@
+# Generated by Django 4.2.18 on 2025-03-19 20:12
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0006_personalni_post_migrate'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='napoveda',
+            name='sifra',
+            field=models.CharField(max_length=255),
+        ),
+        migrations.AlterField(
+            model_name='napovezenoucastnikovi',
+            name='sifra',
+            field=models.CharField(max_length=255, verbose_name='Šifra'),
+        ),
+        migrations.AlterField(
+            model_name='odpoveducastnika',
+            name='sifra',
+            field=models.CharField(max_length=255, verbose_name='Šifra'),
+        ),
+        migrations.AlterField(
+            model_name='spravnaodpoved',
+            name='sifra',
+            field=models.CharField(max_length=255),
+        ),
+    ]
diff --git a/sifrovacka/models.py b/sifrovacka/models.py
index cd71fd15..5745dd8f 100644
--- a/sifrovacka/models.py
+++ b/sifrovacka/models.py
@@ -10,14 +10,14 @@ class OdpovedUcastnika(models.Model):
 
 	resitel = models.ForeignKey(Resitel, blank=False, null=False, on_delete=models.CASCADE)
 	odpoved = models.TextField("Tajenka bez diakritiky", blank=False, null=False,)
-	sifra = models.IntegerField("Číslo šifry", blank=False, null=False,)
+	sifra = models.CharField("Šifra", max_length=255, blank=False, null=False,)
 	timestamp = models.DateTimeField("Timestamp", blank=False, null=False, default=timezone.now)
 	uspech = models.BooleanField("Úspěch", blank=False, null=False, default=False)
 
 
 class SpravnaOdpoved(models.Model):
 	odpoved = models.TextField(blank=False, null=False,)
-	sifra = models.IntegerField(blank=False, null=False,)
+	sifra = models.CharField(max_length=255, blank=False, null=False,)
 	skryty_text = models.TextField(blank=False, null=False,)
 
 	def __str__(self):
@@ -29,13 +29,13 @@ class NapovezenoUcastnikovi(models.Model):
 		ordering = ["-timestamp"]
 
 	resitel = models.ForeignKey(Resitel, blank=False, null=False, on_delete=models.CASCADE)
-	sifra = models.IntegerField("Číslo šifry", blank=False, null=False,)
+	sifra = models.CharField("Šifra", max_length=255, blank=False, null=False,)
 	timestamp = models.DateTimeField("Timestamp", blank=False, null=False, default=timezone.now)
 
 
 class Napoveda(models.Model):
 	text = models.TextField(blank=False, null=False,)
-	sifra = models.IntegerField(blank=False, null=False,)
+	sifra = models.CharField(max_length=255, blank=False, null=False,)
 
 	def __str__(self):
 		return f"{self.sifra}: {self.text}"
diff --git a/sifrovacka/views.py b/sifrovacka/views.py
index 2a111faf..40838dac 100644
--- a/sifrovacka/views.py
+++ b/sifrovacka/views.py
@@ -16,7 +16,7 @@ class SifrovackaView(FormView):
 		resitel = Resitel.objects.get(osoba__user=self.request.user)
 		instance.resitel = resitel
 		instance.save()
-		sifra = SpravnaOdpoved.objects.filter(sifra=instance.sifra, odpoved__iexact=instance.odpoved.strip()).first()
+		sifra = SpravnaOdpoved.objects.filter(sifra__iexact=instance.sifra, odpoved__iexact=instance.odpoved.strip()).first()
 		if sifra is None:
 			return formularOKView(self.request, f'<h1>Bohužel vám hvězdy nebyly nakloněny. Rozumějte <i>máte to blbě</i>.</h1> <p><a href="{reverse("sifrovacka")}">Zkusit znovu.</a></p><br><br><br>')
 
@@ -40,10 +40,10 @@ class NapovedaView(FormView):
 		resitel = Resitel.objects.get(osoba__user=self.request.user)
 		instance.resitel = resitel
 
-		if NapovezenoUcastnikovi.objects.filter(resitel=resitel, sifra=instance.sifra).first() is None:
+		if NapovezenoUcastnikovi.objects.filter(resitel=resitel, sifra__iexact=instance.sifra).first() is None:
 			instance.save()
 
-		napoveda = Napoveda.objects.filter(sifra=instance.sifra).first()
+		napoveda = Napoveda.objects.filter(sifra__iexact=instance.sifra).first()
 		return formularOKView(self.request, f'<h1>Nápověda k šifře číslo {instance.sifra} je:</h1><p>{napoveda.text}</p> <p><a href="{reverse("sifrovacka")}">Odevzdat řešení.</a></p><br><br><br>')
 
 
@@ -63,6 +63,6 @@ class PreskoceniView(FormView):
 		resitel = Resitel.objects.get(osoba__user=self.request.user)
 		instance.resitel = resitel
 		instance.save()
-		sifra = SpravnaOdpoved.objects.filter(sifra=instance.sifra).first()  # FIXME co když je více "správných" odpovědí?
+		sifra = SpravnaOdpoved.objects.filter(sifra__iexact=instance.sifra).first()  # FIXME co když je více "správných" odpovědí?
 
 		return formularOKView(self.request, f'<h1>{sifra.skryty_text}</h1> <p><a href="{reverse("sifrovacka")}">Zpět na odevzdávátko.</a></p><br><br><br>')