Нужна реализация JavaScript ROT47 - PullRequest
1 голос
/ 04 августа 2010

Я нашел следующий код для декодирования строки ROT13 и помещения ее на веб-страницу с помощью JavaScript:

<script type="text/javascript">
 document.write("string".replace(/[a-zA-Z]/g, 
 function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);}));
</script>

Мне нужен похожий код JavaScript для декодирования ROT47.

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

Один из них здесь - http://www.visualco.de/ROTn.js.html

Может кто-нибудь помочь, пожалуйста?

Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 04 августа 2010

Просто скопируйте необходимые функции в свой JavaScript.В нужном месте выполните

<script type="text/javascript">
 document.write(ROT47("string"));
</script>

необходимые функции:

//
// ROTn.js -- ROT13 and ROT14
//
// JavaScript-code   implementing   ROT13  and   ROT47.    Useful  to   obscure
// email-adresses and telephone numbers from inquisitorial site crawlers.
//
// Usage:
//   <script type="text/javascript">
//     ROT13('<n uers="znvygb:vasb@ivfhnypb.qr">vasb@ivfhnypb.qr</n>');
//   </script>
//
// Resources:
//     http://de.wikipedia.org/wiki/ROT13
//     http://www.drweb.de/magazin/codieren-und-verschlusseln-mit-javascript/
//
////////////////////////////////////////////////
// (C) 2010 Andreas  Spindler. Permission to use, copy,  modify, and distribute
// this software and  its documentation for any purpose with  or without fee is
// hereby  granted.   Redistributions of  source  code  must  retain the  above
// copyright notice and the following disclaimer.
//
// THE SOFTWARE  IS PROVIDED  "AS IS" AND  THE AUTHOR DISCLAIMS  ALL WARRANTIES
// WITH  REGARD   TO  THIS  SOFTWARE   INCLUDING  ALL  IMPLIED   WARRANTIES  OF
// MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
// SPECIAL,  DIRECT,   INDIRECT,  OR  CONSEQUENTIAL  DAMAGES   OR  ANY  DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
// OF  CONTRACT, NEGLIGENCE  OR OTHER  TORTIOUS ACTION,  ARISING OUT  OF  OR IN
// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
// 
// $Writestamp: 2010-06-09 13:07:07$
// $Maintained at: www.visualco.de$

function ROTn(text, map) {
  // Generic ROT-n algorithm for keycodes in MAP.
  var R = new String()
  var i, j, c, len = map.length
  for(i = 0; i < text.length; i++) {
    c = text.charAt(i)
    j = map.indexOf(c)
    if (j >= 0) {
      c = map.charAt((j + len / 2) % len)
    }
    R = R + c
  }
  return R;
}

function ROT47(text) {
  // Hides all ASCII-characters from 33 ("!") to 126 ("~").  Hence can be used
  // to obfuscate virtually any text, including URLs and emails.
  var R = new String()
  R = ROTn(text,
  "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~")
  return R;
}
0 голосов
/ 31 октября 2016

Вот еще один короткий (rot47.min.js) для кодирования / декодирования с использованием ROT47 алгоритма

function rot47(x)
{var s=[];for(var i=0;i<x.length;i++)
{var j=x.charCodeAt(i);if((j>=33)&&(j<=126))
{s[i]=String.fromCharCode(33+((j+ 14)%94));}
else
{s[i]=String.fromCharCode(j);}}
return s.join('');}

source: https://rot47.net

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...