Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Шифрование в JavaScript (https://javascript.ru/forum/misc/32729-shifrovanie-v-javascript.html)

Evkliptik 28.10.2012 01:07

Шифрование в JavaScript
 
Ребятки мне необходимо написать программу которая будет шифровать текст.

В него входят 26 символов английского алфавита и 2 символа точка и запятая т.е 28 символов.

есть вариант реализовать такое на JavaScript?

если да то подскажите в каком направлении капать, мб литературу какую...
буду безумно благодарен.

dmitry111 28.10.2012 01:15

всмысле шифровать?
Чтоб вместо текста были какие-нибудь крокозябры? :)

Можно регэкспом заменять каждый символ с помощью метода replace()

Evkliptik 28.10.2012 01:16

dmitry111,

Я думаю мб что бы на одной странице я вводил текст, мне он выдовал кракозябры как ты называешь,
а на другой странице я вводил эти кракозябры, а мне выдавало начальный текст.

dmitry111 28.10.2012 01:32

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>


    
    <script>

      var text = prompt("введите слово", "");
      var elem = document.createElement("p");
      elem.id = "xxx";
      var regEx = /[\S]+/;
      
      var x = text.replace(regEx, "слово зашифровано, нажми на меня чтобы расшифровать");
      elem.innerHTML = x;
      document.body.appendChild(elem);
      
      document.getElementById("xxx").onclick = function () {
      elem.innerHTML = text;      
      };

    </script>

  </body>
</html>



Можно придумать какие-либо алгоритмы и шифровать каждый символ.

Evkliptik 28.10.2012 01:39

dmitry111,

Это бомба!)) то что нужно)
ты сам написал это?
если да , то можно переписать его таким образом что бы было поле, под полем кнопка "go"
над полем 2 чек бокса.
напротив одного слово "Шифрование"
а напротив другого "Дешифрование"
выбирая определённое поле происходит нужное действие, после нажатия кнопки "go"

dmitry111 28.10.2012 01:50

Evkliptik,

это не шифрование, это просто замена текста на фразу. Если нужно подобное не нужен даже регэкс.

Вот replace()
Если возникнут вопросы, с кодом, выкладывайте тут, помогу

Evkliptik 28.10.2012 02:05

dmitry111,
Спасибо огромное, буду ковырять. если не сегодня ночью то завтра к вечеру что нить уже сделаю.

Evkliptik 28.10.2012 03:25

Нашёл вот что
<h1>Шифрация текста на JavaScript</h1>
<br>
<script type="text/javascript">
<!-- Begin
function Encrypt(theText) {
output = new String;
Temp = new Array();
Temp2 = new Array();
TextSize = theText.length;
for (i = 0; i < TextSize; i++) {
	rnd = Math.round(Math.random() * 122) + 68;
	Temp[i] = theText.charCodeAt(i) + rnd;
	Temp2[i] = rnd;
}
for (i = 0; i < TextSize; i++) {
	output += String.fromCharCode(Temp[i], Temp2[i]);
}
return output;
}
function unEncrypt(theText) {
output = new String;
Temp = new Array();
Temp2 = new Array();
TextSize = theText.length;
for (i = 0; i < TextSize; i++) {
	Temp[i] = theText.charCodeAt(i);
	Temp2[i] = theText.charCodeAt(i + 1);
}
for (i = 0; i < TextSize; i = i+2) {
	output += String.fromCharCode(Temp[i] - Temp2[i]);
}
return output;
}
//  End -->
</script>

<form name=encform onsubmit="return false;">
<p>
<textarea name=box1 rows=5 cols=80>Текст для проверки возможности шифрования</textarea>
<p>
<input type=button value="Зашифровать Box1 в Box2" onClick="this.form.box2.value=Encrypt(this.form.box1.value);">
<br><p>
<textarea name=box2 rows=5 cols=80></textarea>
<p>
<input type=button value="Расшифровать Box2 to Box3" onClick="this.form.box3.value=unEncrypt(this.form.box2.value);">
<br><p>
<textarea name=box3 rows=5 cols=80></textarea>
</form>


этот скрипт шифрует и цифры и все все символы. есть возможность изменить его так, что бы использовался только английский алфавит и символы точка и запятая, регистр значения не имеет.

dmitry111, как ты думаешь?

dmitry111 28.10.2012 04:57

Можно запрещать ввод для всех символов кроме нужных


<h1>Шифрация текста на JavaScript</h1>
<br>
<script type="text/javascript">
<!-- Begin
function Encrypt(theText) {
output = new String;
Temp = new Array();
Temp2 = new Array();
TextSize = theText.length;
for (i = 0; i < TextSize; i++) {
	rnd = Math.round(Math.random() * 122) + 68;
	Temp[i] = theText.charCodeAt(i) + rnd;
	Temp2[i] = rnd;
}
for (i = 0; i < TextSize; i++) {
	output += String.fromCharCode(Temp[i], Temp2[i]);
}
return output;
}
function unEncrypt(theText) {
output = new String;
Temp = new Array();
Temp2 = new Array();
TextSize = theText.length;
for (i = 0; i < TextSize; i++) {
	Temp[i] = theText.charCodeAt(i);
	Temp2[i] = theText.charCodeAt(i + 1);
}
for (i = 0; i < TextSize; i = i+2) {
	output += String.fromCharCode(Temp[i] - Temp2[i]);
}
return output;
}
//  End -->
</script>

<form name=encform onsubmit="return false;">
<p>
<textarea name=box1 rows=5 cols=80></textarea>
<p>
<input type=button value="Зашифровать Box1 в Box2" onClick="this.form.box2.value=Encrypt(this.form.box1.value);">
<br><p>
<textarea name=box2 rows=5 cols=80></textarea>
<p>
<input type=button value="Расшифровать Box2 to Box3" onClick="this.form.box3.value=unEncrypt(this.form.box2.value);">
<br><p>
<textarea name=box3 rows=5 cols=80></textarea>
</form>

    <script>
// не кроссбраузерный, работает в safari
// не дает вводить символы кроме латинских букв
      document.getElementsByTagName("textarea")[0].onfocus = function (event) {      
        this.onkeypress = function (event) {
          var key = event.which;
          if (key < 97 || key > 122) return false;          
        };        
      };    
    </script>



Это так набросок, чтобы дать понять. Он не кроссбраузерный и только для латинских букв.
просто чтоб донести суть.

5 ночи) :)

dmitry111 28.10.2012 04:59

ах да, пробел тоже символ!

FINoM 28.10.2012 06:11

То, чем вы занимаетесь называется не шифрованием, а кодированием. Для шифрования есть куча алгоритмов, таких как RSA, схема Эль-Гамаля и пр.

Evkliptik 28.10.2012 11:35

Цитата:

Сообщение от FINoM (Сообщение 212688)
То, чем вы занимаетесь называется не шифрованием, а кодированием. Для шифрования есть куча алгоритмов, таких как RSA, схема Эль-Гамаля и пр.

а в чём сильная разница? если преподы на парах называют это шифрованием...

dmitry111 28.10.2012 13:54

на самом деле FINoM прав.
И кстати алгоритм кода, шифрованного на стороне пользователя не лучшее решение, потому как доступен) Лучше это делать на стороне сервера!

Evkliptik 28.10.2012 13:58

dmitry111,

да мне лабу сделать и шоб от меня от**бались)
я жаву буду летом учить, он у меня на 5 курсе ток будет преподаваться.
просто интересно сделать лабу именно на жаве, так он мне нравится :-[

Nekromancer 28.10.2012 15:33

Evkliptik,
Море логики. Вот такие студены и выходя у нас и вузов, отлично. Для начала, это не Java. Может вам на другой форум?

Dim@ 28.10.2012 15:50

Nekromancer, мдаа море логики
Evkliptik,
это не Java, а JavaScript, видите разницу между:
javascript:

(function () {
 var x = 5;
 for (var i = 1, k = 1; i < x; i++) {
  k = k * (i + 1);
 };
 x = k;
 alert ("Факториал x = 5: " + x);
})();

Java:
class MyClass {
 public static void main (String args[]){
  long x = 5, k = 1;
  for (int i = 1; i < x; i++){
   k = k * (i + 1);
  };
  x = k;
  System.out.println("Факториал x = 5: " + x);
 }
}

Evkliptik 28.10.2012 16:02

Как бы я понял, но по русски писать долго жава скрипт.
Я думал тут люди более высокого интелекта.
если вам нужно сообщений набрать идите в другие темы.

Dim@,
я знаю разницу. я думал меня поймут если я просто напишу жава, вместо жава скрипт. форум то Js...

Nekromancer 28.10.2012 17:38

Evkliptik,
Вас то все прекрасно поняли, а ещё поняли, что вам не только программный код лень писать, вам вообще всё лень делать, даже назвать язык так, как он называется.

dmitriymar 28.10.2012 17:48

Цитата:

Сообщение от Evkliptik
Как бы я понял, но по русски писать долго жава скрипт.

если уж лень, то JS ещё короче и понятно о чём речь:)

Dim@ 28.10.2012 21:05

Evkliptik,
Цитата:

Сообщение от Evkliptik
Я думал тут люди более высокого интелекта

не выпендривайтесь пожалуйста
Цитата:

Сообщение от Evkliptik
я думал меня поймут если я просто напишу жава, вместо жава скрипт. форум то Js...

вас то поняли, но эти языки очень разные поэтому часто просят их не путать и не называть один другим:)

FINoM 28.10.2012 21:11

http://www.leemon.com/crypto/BigInt.html вот очень неплохая либа с кучей удобных криптологических алгоритмов. Писал с её помощью практику по диплому, взламывая дискретный логарифм длиной в 700 десятичных знаков. Эх... хорошие были времена, пик интереса к программированию.

trikadin 29.10.2012 09:19

Цитата:

Сообщение от Nekromancer
Вот такие студены и выходя у нас и вузов, отлично.

Ну, они все разные) А ещё я стал опасаться, не учится ли этот чел вместе со мной - у меня как раз препод дал задание написать простейший шифровщик/дешифровщик...

Evkliptik, ты с какова города?

Nekromancer 29.10.2012 23:08

trikadin,
За соседней партой сидит. Помоги чуваку, что ле :)

trikadin 30.10.2012 05:47

Цитата:

Сообщение от Nekromancer
За соседней партой сидит. Помоги чуваку, что ле

Молчит, разговаривать не хочет...

9xakep 25.11.2012 10:05

Уже наверное не актуально)

Но я когда писал такую хрень:
http://gmoryes.bplaced.net/backup/code.html
http://gmoryes.bplaced.net/backup/decode.html

Инструкция


Часовой пояс GMT +3, время: 18:00.