テキストをスクランブルしたり戻したりするツール(シード固定型)

※テキストの処理はすべてクライアントサイドで行なわれていますので、情報は一切ネットワーク上に送信されません。

(パスフレーズも入力させてスクランブルするタイプのは、こちら。)

スクランブル前

もとのテキストを入力します。複数行もOK

スクランブルされたテキストがここに現れます。「{{」から「}}」までコピーしてください。そのあとに続く短縮URLはこのページを指すので、これも一緒にコピーするといいです。
または、スクランブル済みのテキストを解読したい場合は、そのメッセージをここに貼り付けてください。同じく「{{」から「}}」を含めてペースト。

もとのテキストが現れます。

サンプル集。好きな行をコピペしてスクランブル解除してみよう!
{{ス犯人はヤ}}
{{デダィビグッ}}
{{っ愚な問だ、ふ}}
{{ぬ、えおまぞし}}
{{しの郎百太ろう}}
{{ニーパル・ョセ}}
{{パッパパッーララ}}
{{外ら腐だもいねとなの意}}
{{だバが学なハ生名ッ小あ}}
{{梅流道で順はす街れ調青}}
{{カいてバつやカっうがバ}}
{{トトイテルタィロメシデ}}
{{ャアチーリドスッンリキ}}
{{やでこったそとがま誰言れ}}
{{ーバュたいチなーーユりに}}
{{んたかいかだゃんんななじ}}
{{ハコヨヨス港ヨコカのコマー}}
{{メうっポぽク食てんー使シン}}
{{たは~前はおはかっ、っ弱っは}}
{{ねちえミカた腐じたっゃンは俺}}
{{プロや、ワフはルーやァゴロ猿プイ}}
{{ャンバル日物ジン 常語ャ無ジ愛本}}
{{転前さ車く追さてだ運いんっ手を、の}}
{{いけにししらしゅゅ追ゅ帆し手ゅかて}}
{{だ料食っか意なわん皮いべ味けてる理}}
{{パ青ャジパマャ黄ジ赤ママ、ジャ、パ}}
{{り紙あッりをぶねつ怒すまひのプりコ}}
{{寝のなれいて三いか得かか文せらくらと}}
{{ラどるうのマアっ首シの骨てなュてンのっ}}
{{て返 い出にて壁れで打際くて寝まりっっる}}
{{別っあ組反のとも仕甘腹て入みですに芻いはる}}
{{ー頭ーニャGピチニPョカNヅ、ト字文はグーレの}}
{{かにいら叱て子おれは 叱で て町あまのらつれ}}
{{てのる’っんもらな鎖でBび人のかいたつて着z}}
{{とキうっね尖っがキるまるがと筆ンには言って決トトンの鉛}}
{{かシバてクまドブはき器シがのっ知しッ隊ブンっ楽だたて隊バ}}
{{郎エちーッら、いいプ分の太ョなら安ぷないか高シ。かのリジかュ}}
{{ンIんいゃおたな タいE Nたのもスしいな化にもな もにけのイLしな}}
{{ダダイイ発だダー 爆イダ イダナイダマダイダダイイダ大インダダッ}}
{{しカアにっもいしもてンろはきあ」書しい「るきプロトたておこもおくフろてもいウをろとお世な}}
{{ラうによんうれ近しててしん食んうンにとどゃづほオほほによ とほいち イっちっうゃどんにわととだ}}
{{、た社告さた報ささ本きてう検せせいのすだい、えて件ちそまだいくべにてどうだで帰たきごせてきっ持討か}}
ちょっぴり解説
再現性のある疑似乱数を使った、文字列スクランブルマシンです。暗号化ってほどのものじゃあないですが、「一見」秘密のメッセージを作って遊べます。
ブラウザにはじめから装備されている乱数生成器は同じ仕様と限らないため、xorshiftっていう(やたら簡単な)アルゴリズムを使って、いつも同じ順序の疑似乱数が得られるようにしました。乱数のシード値は10000に固定してます。これで、スクランブルするのと同じ順序でもとの文字列の復元ができることになります。
くわしい仕様は、まあ、ソース読んでね。

このページのみをローカル保存して使えるようになっていますので、それがどこかにある限りは文字列の復元はできます。
python3で同じ動作をするスクリプト組んでみるとすれば、こんなふう。
#!py -3
# coding:utf-8

def randomgen(seed):
    s = seed
    while True:
        s ^= (s << 13 & 0xffffffff)
        s ^= (s >> 17 & 0xffffffff)
        s ^= (s << 15 & 0xffffffff)
        yield s

def gen_scramble_table(n):
    g = randomgen(10000)
    a = [i for i in range(n)]
    for i in range(n-1, 0, -1):
        r = g.__next__() % (i+1)
        a[i], a[r] = a[r], a[i]
    return a

def scramble_string(s):
    t = list(s)
    n = len(s)
    a = gen_scramble_table(n)
    tmp = t[a[0]]
    for i in range(n-1):
        t[a[i]] = t[a[i+1]]
    t[a[n-1]] = tmp
    return "".join(t)

def unscramble_string(s):
    t = list(s)
    n = len(s)
    a = gen_scramble_table(n)
    tmp = t[a[n-1]]
    for i in range(n-1, 0, -1):
        t[a[i]] = t[a[i-1]]
    t[a[0]] = tmp
    return "".join(t)

def scramble_string_braced(s):
    return "{{"+scramble_string(s)+"}}"

def unscramble_string_braced(s):
    o1 = s.find("{{")
    if o1 == -1:
        return "* error *"
    o2 = s.find("}}", o1)
    if o2 == -1:
        return "* error *"
    return unscramble_string(s[o1+2:o2])

if __name__ == '__main__':
    print(unscramble_string_braced("{{ス犯人はヤ}}"))

(免責)このサイトの情報の利用にともない何らかのトラブルや損害・損失がありましても、一切責任を負いませんのでよろしくおねがいします。

サイトトップへ