Pull to refresh

Comments 24

Нулевой хорошо поддался, только отсутствие пробелов заставляет глаза держать в куче
Похоже что это какой-то шифр перестановки. Судя по частоте букв.
4-ый и 5-ый оказались в своей сути легче, чем скажем 2-ой и 3-ий,
хотя понимаешь это только потратив на них в два раз больше усилий

proof
«for completing.»
Сдаюсь, народ! Как проходить нулевой уровень?
На всякий случай выложу в виде кода, чтобы кто-то случайно на ответ не наткнулся просматривая коменты :)

Function Main()
	
	Local message:String="WYVIHISFAOLLHZPLZAJPWOLYWVZZPISLPZAOLZOPMAJPWOLYHSZVRUVDUHZJHLZHYJPWOLYPUAOPZJHZLAOLWHZZDVYKPZDVYKBUWYVMPAHISLDYPAALUPUSVDLYJHZL"
	
	For Local shift:Int = 1 To 25
		Print "Shift: "+ shift + "  " + DecodeLvl0 (message.ToUpper(), shift)
	Next

End



Function DecodeLvl0:String (message:String, key:Int)

	Local codedMessage:String
	
	For Local i:Int = 0 To message.Length()-1
		Local newChar:Int = message[i]+key
		If newChar>90
			newChar -= 26
		End
		
		codedMessage+=String.FromChar(newChar)
	Next
	
	Return codedMessage
End
</code>

Код на Monkey, но я думаю будет понятно:)
Это решение Lvl1:

Function Main()
	
	Local message:String="FHVZGYZHSGLWVXLWVGSRHNVHHZTVZMWURTFIVLFGGSZGGSVHVXIVGDLIWRHSBWILNZTMVGRXDIRGGVMRMZOGVIMZGRMTXZHVDRGSLWWOVGGVIHFKKVIXZHV"
	Print DecodeLvl1(message)

End



Function DecodeLvl1:String (message:String)

	Local codedMessage:String
	
	For Local i:Int = 0 To message.Length()-1
		Local newChar:Int=message[i]

		If newChar>64 And newChar<91
			newChar = 90 - (newChar - 65)
		ElseIf newChar>96 And newChar<123
			newChar = 122 - (newChar - 97)
		End
		 
		codedMessage+=String.FromChar(newChar)
	Next
	
	Return codedMessage
End
А давайте вы не будете спойлерить решения ну хотя бы пару дней, а? Тем более так явно, даже не намеками. Я уверена, что многие, кто хотели бы сами порешать, этот топик еще даже не видели, не то что не подумали как следует. Уважайте чужой фан.
Ок. Хотя я специально не называл названия методов шифрования, чтобы не портить фан. А в код вникать захотят только те кто не смогут или не захотят решать, имхо.
Для Lvl2:

Function Main()
	
	Local message:String="153344154252344214241415342242113523542433122422311544441542432134313134521514125444234215154423344543113314445215334454432453"
	Print DecodeLvl2(message)

End



Function DecodeLvl2:String (message:String)
	Local alphabet:String="ABCDEFGHIKLMNOPQRSTUVWXYZ"
	Local codedMessage:String
	Local tableMap:StringMap<Int> = New StringMap<Int>
	
	Local i:Int=0
	For local x:Int = 1 to 5
	 	For local y:Int = 1 to 5
	 		tableMap.Add(String(x)+String(y), alphabet[i])
	 		i+=1
	 	Next
	Next


	For Local i:Int = 0 To message.Length()-2 Step 2
		codedMessage+=String.FromChar(tableMap.Get(message[i..i+2]))
	Next
	
	Return codedMessage
End
UFO landed and left these words here
К сожалению, уже нет сил смотреть. Завтра с удовольствием присоединюсь к участникам. И немного по теме :)
Вы сами свою первую ссылку-то посмотрите.
Шифр Вернама (другое название: англ. One-time pad — схема одноразовых блокнотов) — в криптографии система


Это общепринятый перевод
Only those users with full accounts are able to leave comments. Log in, please.