Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   шифр Бэкона. Помогите пожалуйста! (https://javascript.ru/forum/misc/62290-shifr-behkona-pomogite-pozhalujjsta.html)

Дарья87 03.04.2016 12:52

шифр Бэкона. Помогите пожалуйста!
 
Помогите написать шифр Бэкона на JavaScript, пожалуйста!!!Буду очень благодарна!

рони 03.04.2016 13:22

Дарья87,
вы начните

Дарья87 03.04.2016 13:33

начала, не очень получается( поэтому и прошу помощи.

рони 03.04.2016 14:05

Дарья87,
где код?

protoquest 03.04.2016 14:33

Дарья87,
насколько я понял, это простейший кодировщик
Цитата:

Сообщение от Дарья87
начала, не очень получается( поэтому и прошу помощи.

начните с того, что сгенерируйте таблицу кодировки, например
alphabet = "abcdefghijklmnopqrstuvwxyz ".split("")
table = {}

randomSymbol = function(){
  return Math.random() >= 0.5 ? "a" : "b"
}

randomInteger = function(){
  return Math.floor( 1 + Math.random() * 8)
}

generateCode = function(){
  var code = ""
  var counter = randomInteger()
  while(counter--){
    code += randomSymbol()
  }
  if(code in table) return generateCode()
  return code
}

generateTable = function(){
   alphabet.forEach(function(sym){
      table[generateCode()] = sym
   })
}

generateTable()
console.log(table)

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

UPD не, не дочитал, облажался. Это НЕ простое кодирование. Так мы делаем только 2 шага, третий там архисложен, никто тут скорей всего бесплатно это делать не будет:)

рони 03.04.2016 15:00

Дарья87,
без коментариев ...
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
 </head>

<body>
<script>
function crypt(message) {
    var a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
    message = message.split("");
    return message.reduce(function(message, current) {
        var i = a.indexOf(current);
        i = "00000" + i.toString(2);
        i = i.slice(-5);
        i = i.replace(/\d/g, function(a) {
            return ["A", "B"][a]
        });
        return message + i
    }, "")
}

function decrypt(message) {
    var a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
    message = message.match(/.{5}/g);
    return message.reduce(function(message, current) {
        current = current.replace(/./g, function(a) {
            return {
                "A": "0",
                "B": "1"
            }[a]
        });
        current = parseInt(current, 2);
        return message + a[current]
    }, "")
};
document.write(crypt("RAMMSTEIN")+"<br>")
document.write(decrypt("BAAABAAAAAABBAAABBAABAABABAABBAABAAABAAAABBAB")+"<br>")
</script>
</body>

</html>

protoquest 03.04.2016 15:26

рони,
строго говоря, Вы не реализовали шифр Бэкона:
Цитата:

Берётся секретное сообщение.
Выбирается метод кодирования (то есть закон, по которому каждой букве алфавита будет ставится в соответствие определённый набор символов) и зашифровывается сообщение.
Выбирается способ сокрытия сообщения (то есть правило, по которому символам зашифрованного сообщения ставится в соответствие другие буквы или слова алфавита) и получается конечный текст.
то есть, проще говоря, в каждой шифровке должен быть свой ключ
далее, это скрытое сообщение, должно быть еще раз закодировано, чтобы шифр выглядел как обычный текст. Это не особо тривиальная задача, я сам лоханулся, недочитал:). Но мой вариант, по крайней мере, делает первые 2 шага. Третий шаг реализовать очень трудно, если мы хотим еще добиться того, чтобы текст выглядел осмысленным:)

рони 03.04.2016 16:07

Цитата:

Сообщение от protoquest
строго говоря, Вы не реализовали шифр Бэкона:

абалдеть!!!
внизу результат шифрования с помощью функций предложенных выше
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<body>
<h1>Текст до шифрования</h1>
<p class="from">В лесу родилась елочка,
В лесу она росла,
Зимой и летом стройная,
Зеленая была.

Метель ей пела песенку:
«Спи, елочка, бай-бай!»
Мороз снежком укутывал:
«Смотри, не замерзай!»

Трусишка-зайка серенький
 Под елочкой скакал,
Порою волк, сердитый волк,
Рысцою пробегал.

Чу! Снег по лесу частому
 Под полозом скрипит;
Лошадка мохноногая
 Торопится, бежит.

Везет лошадка дровенки,
А в дровнях &mdash; мужичок,
Срубил он нашу елочку
 Под самый корешок.

Теперь она, нарядная,
На праздник к нам пришла
 И много, много радостей
 Детишкам принесла.
</p>
<h1>Текст после шифрования</h1>
<p class="to"><i>В</i> <i>л</i><i>е</i>с<i>у</i> р<i>о</i>д<i>и</i><i>л</i>ась <i>е</i><i>л</i><i>о</i><i>ч</i><i>к</i>а,
В <i>л</i>есу <i>о</i>на <i>р</i><i>о</i><i>с</i>л<i>а</i>,
<i>З</i>им<i>о</i>й <i>и</i> л<i>е</i><i>т</i><i>о</i><i>м</i> <i>с</i>т<i>р</i><i>о</i><i>й</i><i>н</i><i>а</i>я,
<i>З</i><i>е</i><i>л</i><i>е</i>н<i>а</i>я <i>б</i><i>ы</i>л<i>а</i>
</p>
<h1>Зашифрованный текст</h1>
<p class="mes">БЕЗ КОМЕНТАРИЕВ</p>

</body>
</body>

</html>

protoquest 03.04.2016 16:15

рони,
Не заставляйте окружающих думать, что Вы умственно неполноценный, я уверен, что Вы сможете осилить смысл предыдущего сообщения, если постараетесь. То что Вы накалякали -- это всего лишь трансляция туда-сюда, Вы даже ключ не генерируете (п2)

рони 03.04.2016 16:22

protoquest,
увы то что ты пишешь мне не подвласно :) мне далеко до твоего уровня программирования, да и большинства профи этого форума.


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