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

JavaScript - szyfrowanie, kryptologia-implementacje.

Konferencja JOIN! 2018
0 głosów
431 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 319 wizyt
0 głosów
1 odpowiedź 539 wizyt
pytanie zadane 29 kwietnia 2015 w C i C++ przez veryhotshark Obywatel (1,610 p.)
0 głosów
1 odpowiedź 69 wizyt
pytanie zadane 3 dni temu w C i C++ przez Zayebisty Obywatel (1,540 p.)
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

55,235 zapytań

99,529 odpowiedzi

204,779 komentarzy

27,217 pasjonatów

Przeglądających: 213
Pasjonatów: 5 Gości: 208

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.

...