web-dev-qa-db-ja.com

入出力を知っている、エンコード方法とエンコードに使用されたパスキーを決定する方法は?

私はこのサイトとSEを見てきました。しかし、私はこれを理解することができませんでした。使用されているエンコーディング(および/またはエンコードキー)のタイプを見つける方法はありますか?たとえば、エンドユーザーに表示される前にリンクをエンコードするWebアプリケーション(PHP)をテストしています。

たとえば、ソースリンクは次のとおりです。 https://www.Amazon.com/gp/drive/share?s=OUhODh-US9cj1EVKlakRWw

次に、エンコードされた出力のリンクは次のようになります。

使用されたエンコード方法とパスキー(入力文字列を混合/置換して出力文字列を生成するために使用された文字列)を見つける方法はありますか?.

元の文字列で一連の一般的なハッシュ/エンコードシーケンスを試し、一致する出力に遭遇することを望んでいるだけではありませんか?入力文字列と出力ハッシュがたくさんある場合、それは分析に何らかの形で役立ちますか?

1
RoyalRoy

まず、定義。コンピュータサイエンスでは、「エンコーディング」はデータを偽装することなくデータを表現する別の方法です(ASCII、EBCDIC、ISO-8859-1はすべてテキストエンコーディングの例ですが、base64とuuencodingはバイナリからテキストへのエンコーディング)。一方、「暗号化」は、データの性質と価値をマスクする方法です(AES、DES、およびRC4はすべて、はるかに古いシーザー暗号と同様に暗号化の例です)。

何かを暗号化するためにどのタイプの暗号化が使用されたかを把握することは、 識別攻撃 の形式であり、一種の分析暗号化スキームは抵抗するように設計されています。一方、エンコーディングの識別は、統計分析またはヒューリスティック分析によって実行できることがよくあります。

あなたの場合、データはほぼ確実にエンコーディング base64 です。これは、テキストを処理するように設計されたシステムの制限内でバイナリデータを表す方法にすぎません。具体的には、base64で2回エンコードされた64バイトのバイナリデータのブロックのように見えます(大文字と小文字の一般的なパターンと同様に、末尾の二重等号はbase64を強く連想させます)。

1
Mark