隠された反転(強盗のスレッド)


16

これはパズルです。警官のスレッドはここにあります。

あなたの仕事は、左の逆を実行する警官のスレッドで提供されたプログラムのアナグラムを見つけることです。

回答をクラックしたら、ソリューションを以下の回答として投稿し、元の回答者に通知してください。

あなたが最初にクラックしたプログラムの数で得点されます。

回答:


21

Python 3、46バイト、Lynn

lambda x0223334566789:(x0223334566789*89)//178

「元の回答者に通知する」方法を教えてください。
GB

オリジナルに対する回答をリンクするコメントを残しました
-Sefa

あなたはドロップしなければならないf=元の関数の一部でその必要がないので、あなたのコードの開始時にしていない
0 'の

完了しました。コピーアンドペーストするのが速すぎます。
GB

16
ここで私は実際に解決策を強引に強要し(そして、それが存在すると仮定することさえあります)、あなたは問題全体を回避します!+1
orlp

14

Python 2、225バイト、orlp

p=90930641353124136621573325641513715557077985927835294018496194596645372722158;q=101979812089012306249375934082966806799688507587087308196267706260111970225882#--223444799
lambda n:pow(n,pow(65537,(p*q-2*(p+q))/4,p*q),~p*~q)

ランダムな素因数を終日推測した後、私は幸運だったと思います...

(デフォルトのc4.8xlargeスポット制限は4ですが、昨年は10に上げました。16スレーブから6にFAAS構成を微調整する必要がありました(+3 mpi、1マスター)。20mポリセレクト、12h 50mふるい、2h 25m linalg、30m sqrt。合計コスト〜$ 70。少なくとも@orlpは解けるサイズを選択するのに十分でしたが、私はこれを二度とやっていません!最後のステップを@IlmariKaronenに感謝し、はいについて冗談を言っています推測:P)


I ..何...今私は、私は意図的にまだ適度に小さいだろうサイズを選んだが、あまりにも高コストな攻撃に:(お金を原価計算のための悪い感じ、私は実際に誰もがこの上のお金を費やすだろうとは思いませんでした。。
orlp

1
@orlp私にとっては一度限りの経験として、それだけの価値があります。人々がこれから512ビットRSAセキュリティについて何かを学ぶことを願っています:)
Sp3000

これはゴルフへの真の献身であり、時間だけでなくお金も費やします!興味深いことに、攻撃者はクラウドコンピューティングサービスの試用版を介して512ビットRSAを無料で破る可能性があることに注意してください。
マイル

@miles AWSには 誰かが試してみたいと思うなら学生のためのクレジットをであり、他のサービスが同じことをしたとしても驚かないでしょう。そのため、少なくとも初めては、そのトライアルのアイデアはそれほど遠くないでしょう。(誰でもかかわら試してみたい場合は-を確認してくださいすべてのボリュームを削除し、AMIS、などの設定が完了したら、そうでなければ、ストレージのために課金されますので)
SP3000

11

Python 2、83バイト、orlp

元の:

#((()))****+,,---/2289;==oppppppqqqqqw~~
lambda n:pow(n,65537,10998167423251438693)

クラック:

p=3207399658;q=3428998126#--11
lambda n:pow(n,pow(65537,(p*q-2*(p+q))/4,p*q),~p*~q)

オンラインでお試しください!

Wolfram AlphaによるRSAクラッキング。;)


おっと、~p*~qまっすぐに短くなっていることに気づきました-~p*-~q
-orlp

(p*q-2*(p+q))/4しかし、どのように部品をリバースエンジニアリングしましたか?:)
orlp

それが最もトリッキーな部分でしたね。基本的に、カーマイケル関数の知識p/2q/2が両方とも奇数素数であるという事実、および利用可能なキャラクターを使用して機能するものを見つけるための試行錯誤の束。
イルマリカロネン

私は意図的に選んだpq(本物、コード内の1があるp-1q-1その目的をゴルフ用)など(p-1)/2、私たちが持っているプライムそうですφ(φ(pq)) = ((p-1)/2-1)((q-1)/2-1)。これにより、オイラーのアイデンティティを使用して65537mod のモジュラー逆数φ(pq)(RSAに必要なもの)を計算でき、モジュラー逆論理を実装したり別の大きな定数をハードコーディングしたりする必要がないため、答えがはるかに短くなります。-~q*-~p-> とは別に~q*~p、あなたはまさに私の機能を見つけました:)
orlp

1
実際には、マイナーのNITを選ぶために、私は信じてφ(φ(pq)) = 2((p-1)/2-1)((q-1)/2-1)安全素数のためにpq、理由はφ(4) = 2。ただしλ(φ(pq)) = lcm(2, (p-1)/2-1, (q-1)/2-1)、最大((p-1)/2-1)((q-1)/2-1)/2であり、その倍数から1を引いた値が指数になります。:)
イルマリカロネン

7

Python 3、80バイト、Wolfram

from bisect import*
q=int(input())
print(bisect([(h+1)**2 for h in range(q)],q))

これはクラックするのが本当に大変でした!Python 3ディストリビューションに含まれているbisectライブラリを使用します。このbisect関数は、ソートされたリストと要素を受け取り、順序を維持するために要素を挿入できる右端のインデックスを返します。qから始まる正方形の長さリスト1と要素を与えるだけqです。


1
に変更(h+1)することをお勧めし-~hます。P:そして、私はこの挑戦のポイントではないことに気づいた
ETHproductions

@ETHproductions演算子の優先順位のためにとにかく間違っているでしょう。
Sp3000

@ Sp3000ええ、私はPython **よりも優先順位が高いとは思いませんでした~。これは-~2**2、構文エラーをスローするJS (「括弧なしの単項式は '**'の左側に表示できない」)よりも優れていると思います。
-ETHproductions

@ETHproductions彼らは実際、あいまいさを避けるためにそれを行いました。これは、私が付け加えるかもしれないが、ほとんどのJS設計では非常に特徴的です。
エソランジングフルーツ

Challenger5 @実は、私はそこにあなたに同意する必要があると思い:近年のTC39は、必ず追加された新機能は(含まれてできるだけあいまいさのように完全に無料です作るために非常に慎重になっている**ES2017で追加作業を、)
ETHproductions

6

Javascript、21バイト、Arnauld

元の

b=>Math.pow(b,torc=3)

クラック

o=>Math.cbrt(o,pbw=3)

キューブルートを返します。


行くぞ!;)
Arnauld

@Arnauld:JSを使用すると、定義されているよりも多くの引数を使用して関数を呼び出すことができるのは少し奇妙です。その背後にある考えは何だろうか。
エミグナ

6
そうです、JSはそれを設計上許可しています。ただし、追加の引数は、関数によって手動でアクセスできる引数オブジェクトに保存されるため、完全に失われるわけではありません。
アーナルド

5

7、9バイト、ais523

00000000: 0173 dc25 7e13 dcb6 1f                   .s.%~....

ブルートフォースが常に勝つため、そして9!わずか362880です


4

Processing.js、59バイト、Kritixi Lithos

元の:

float igetuwebaoli(int p){return p*(((17*-4*-3)))+0+0;}//,,

クラック:

int loabewuteg(float p,i){return (i+0**+0,(p/17/(-4*-3)));}

まあ、それは十分簡単でした。最も難しい部分は、余分なコンマとアスタリスクをどこに貼り付けるかを考え出すことでした。幸いなことに、Processingでは、Cスタイルのコンマ式だけでなく、余分な未使用の関数パラメーターも許可されているようです。


1
どうやら、私がリンクした通訳が間違っていたようです。実際、Processing-javaはProcessing.jsにプリコンパイルされるため、ほとんどの(またはすべての)オンラインインタープリターはおそらく間違っているでしょう。今のところ、私にとって最善の行動は私にとってだと思います。あなたの答えは有効であるため、Processingではなく「Processing.js」に変更する必要があります(Processing-javaは大量のエラーを返します)。Processing-javaと同じコードを使用して別個の回答を投稿しますが、ネストインタープリターはそれをprocessing.orgからインストールします。とにかくよくやった!
クリチキシリトス

4

JavaScript(ES6)、63バイト、SLuck49

元の:

x=>eval(atob`eCp4KzEvLyAgfXBModLS4TvEn4wp1iys9YRRKC85KLIhNMC=`)

クラック:

x=>eval(atob`CgpNYXRoLnBvdyh4LTEsMC41KSAvLw4589CEIKKMRefipyz=`)

上記のbase64コードは次のようにデコードします。



Math.pow(x-1,0.5) //...

どこ ...、コメント内にあるためJSインタープリターによって無視されるランダムなガベージの束を表します。

この解決策は試行錯誤で見つけました。最後に、本当に難しいのは、コードの先頭にある2つの改行であり、残りの行を適切に配置MMath、base64エンコードを元の文字セットで利用可能なものにするために必要でした。最初にスペースを試しましたが、" M"base64-encodesにエンコードし"ICBN"Bコードの".po"後半でエンコードするために使用できるものだけが必要でした。 "0+M""1*M""1?M"私は考えることができ、または任意の他の同様のノーオペレーションプレフィックスはどちらか動作しませんでしたが、改行はしませんでした。

これは正確に意図した解決策ではないかもしれませんが、何であれ-それは機能します。:)

デモ:

var f = x=>eval(atob`eCp4KzEvLyAgfXBModLS4TvEn4wp1iys9YRRKC85KLIhNMC=`)
var g = x=>eval(atob`CgpNYXRoLnBvdyh4LTEsMC41KSAvLw4589CEIKKMRefipyz=`)
for (var i = -0; i <= 10; i++) console.log(i, '->', f(i), '->', g(f(i)))


うまくいくものを見つけるのは良い仕事でした。最初に余分なキャラクターを置くと、これが少し難しくなることを望んでいました
-SLuck49

印象的:)私はまったく同じアプローチを取りましたが、改行を試すとは思いませんでした。他の場所でCを失おうとしていましたが、どこにも行きませんでした。
クリスM

3

Brain-Flak、26バイト、Wheat Wizard

オリジナル(13を追加)

((((()()())){}[()]){}{}{})

クラック(13を減算)

([(((()())()){}){}{}](){})




3

JavaScript(ES6)、46バイト、 SLuck49

オリジナル(ln(x + 1)を計算)

x=>Math.log(x+(+String(t=985921996597669)[5]))

クラック

x=>Math[(lg=19979699+55686).toString(9+25)](x)

逆がMath組み込みであることに気付かなければ、これをクラックすることはなかったでしょう。(lg=19979699+55686).toString(9+25)は複雑な戻り方です"expm1"


うまくできました!ええ、私はMathの関数を調べて、何を使うかを決め、見expm1、そして「待って、それは問題だ」と言いました。
SLuck49

2

J、10バイト、マイル

1%:@*~>:[<

I have to write something here because the answer is too short.


2

J, 29 bytes, Zgarb

Original

5#.[:,(3 5&#:(-$]-)7)#.inv"0]

Crack

[:(](07-5)"3 #.-:&#$,)5#.inv]

Try it online!

Another crack equivalent is

[:((3 ]7-5)#.-:&#$,)5#.inv"0]

Explanation

[:(](07-5)"3 #.-:&#$,)5#.inv]  Input: integer n
                            ]  Get n
                      5        The constant 5
                       #.inv   Get the digits of n in base 5
[:(                  )         Operate on those digits D
                    ,            Flatten D (does nothing since it is already a list)
                  #              Get the length of D
               -:&               Halve it
                   $             Reshape D to half its length (only the base 2 digits)
    (07-5)"3                     The constant 2 with rank 3
             #.                  Convert the front-half of D to a decimal from base 2
   ]                             Return the right result

Yep, that works! It's a bit different from my solution, but there's a lot of leeway. The basic logic is the same though.
Zgarb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.