• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JavaScript - szyfrowanie, kryptologia-implementacje.

Ultraszybki serwer VPS NVMe BIZNES
0 głosów
199 wizyt
pytanie zadane 10 marca 2016 w JavaScript, jQuery, AJAX przez Rubeus024 Obywatel (1,630 p.)

Cześć wszystkim,

w celu przećwiczenia podstaw JS, stworzyłem kod, który szyfruje według prostego algorytmu przedstawionego obok: http://www.cryptography.ovh.org/index.php?page=nihilisci lub

http://www.crypto-it.net/eng/simple/nihilist.html?tab=1

Zaznaczam, że dopiero uczę się tego języka. Jest w niej jedna wada, jeżeli hasło jest większe od drugiego klucza, sumowanie liczb w tablicach jest nieprawidłowe. niestety nie mam pomysłu jak to naprawić ostatecznie.

Jak ktoś posiada inne implementacje szyfrów lub w przyszłości go ukończy, niech go wrzuci do wątku. Można eż zająć się deszyfracją ciągu liczb. Uważam, że to całkiem dobra partia do ćwiczeń. Niech moc będzie z Wami!

<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Stronka</title>
</head>
<body>
	<script type="text/javascript" >

	var keyOne="Radom".toLowerCase().split("").reverse(); // pierwszyklucz potrzebny do tablicy polybiusSquare1D, metoda reverse() potrzebna na potrzeby algorytmu
	var asciiTable=[ "a", "b", "c", "d", "e","f", "g", "h", "i", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t","u","v","w", "x", "y","z"];
	keyOne.forEach(function(element,index,array){ 
	if(asciiTable.indexOf(element)!=-1) //wartosc -1 metody indexOf wskazuje brak wskazanego eleentu w tabeli
		asciiTable.splice(asciiTable.indexOf(element),1); 
		});
	var keyClean= new Array(); // klucz z niepowtarzajacymi sie literami
	keyOne.forEach(function (element,index,array){ 
	if(array.indexOf(element,index+1)==-1)
		keyClean.push(element);
	})
	keyClean.reverse();
	var polybiusSquare1D=keyClean.concat(asciiTable);	// łączenie klucza z pozostałymi literami tablicy
	for(var i=0 ;i<25 ;i++){ //pętla wypisującą gotową tablicę polybiusSquare1D na ekranie
		if(i%5==0 && i!=0){
			document.write("<br>")
			document.write(i+1," ",polybiusSquare1D[i]," ");
		}
		else
			document.write(i+1," ",polybiusSquare1D[i]," ");
	}
	document.write("<br><br><br>","----------------------------<br>")
	
	var keyTwoCharNumbers="palenica".split("").map(function (element,index,array){ //tablica zawierająca pozycje liter( ale nie są jeszcze zakodowane!) w tablicy polybiusSquare1D
		return polybiusSquare1D.indexOf(element)+1;
	});;
	//zapytanie konsoli
	var password=prompt("Przekaż hasło do zakodowania:").toLowerCase().split("").map(function (element,index,array){
		return polybiusSquare1D.indexOf(element)+1;
	});
	// funkcja kodująca poszczególne znaki korzystając z tablicy polybiusSquare1D
	function EncodeString(arrayOfCharacters){ 
		var table=new Array();

		for(var i=0;i<arrayOfCharacters.length;i++){
			if(arrayOfCharacters[i]<=5){
				table.push(10+(arrayOfCharacters[i]));
			}
			else if (arrayOfCharacters[i]>5 && arrayOfCharacters[i]<=10){
				table.push(20+(arrayOfCharacters[i]-5));
			}
			else if (arrayOfCharacters[i]>10 && arrayOfCharacters[i]<=15){
				table.push(30+(arrayOfCharacters[i]-10));
			}
			else if (arrayOfCharacters[i]>15 && arrayOfCharacters[i]<=20){
				table.push(40+(arrayOfCharacters[i]-15));
			}
			else{
				table.push(50+(arrayOfCharacters[i]-20));
			}
		}
		return table;
	}
	//wypisanie na ekranie zakodowany klucz i wiadomość.
	document.write("klucz drugi: palenica","<br>",EncodeString(keyTwoCharNumbers) 
	,"<br> Zakodowane hasło: <br>",EncodeString(password),"<br>");
	var result=EncodeString(keyTwoCharNumbers); //kodowanie drugiego klucza
	var y=EncodeString(password);
	var wynik=y.map(function (a,b){ //sumowanie dwóch zakodowanych stringów
		return a+result[b];
	})
document.write("Oto Końcowy wynik<br>");
document.write(wynik);

	</script>
</body>
</html>

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 269 wizyt
0 głosów
1 odpowiedź 420 wizyt
pytanie zadane 29 kwietnia 2015 w C i C++ przez veryhotshark Obywatel (1,620 p.)
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 21 października 2017 w Python, Django przez Deloryn Obywatel (1,430 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.
Ciekawy innych porad? Odwiedź tę stronę!

44,296 zapytań

84,112 odpowiedzi

167,459 komentarzy

21,201 pasjonatów

Przeglądających: 152
Pasjonatów: 6 Gości: 146

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...