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

JavaScript - szyfrowanie, kryptologia-implementacje.

0 głosów
363 wizyt
pytanie zadane 10 marca 2016 w JavaScript, jQuery, AJAX przez Rubeus024 Obywatel (1,680 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 299 wizyt
0 głosów
1 odpowiedź 504 wizyt
pytanie zadane 29 kwietnia 2015 w C i C++ przez veryhotshark Obywatel (1,600 p.)
0 głosów
0 odpowiedzi 18 wizyt
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

52,032 zapytań

94,890 odpowiedzi

193,428 komentarzy

25,358 pasjonatów

Przeglądających: 138
Pasjonatów: 2 Gości: 136

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.

...