2012-04-12 83 views
3

コマンドラインツールを使用して16文字の文字列を取り込み、16文字の暗号化された文字列(人間が判読可能な形式)を生成する方法を教えてください。Linuxでの文字列暗号化

私はopensslのようなオプションを調べましたが、出力の長さを制御することはできません。

助言してください。

+2

どのくらい強くなければなりませんか?軍用グレードの暗号化を必要としない場合は、シンプルな置換暗号(秘密鍵で変更されたもの)がおそらく機能し、自分自身を実装するのが簡単になります。 –

+0

Jimに感謝しますが、これを実行するために使用できるコマンドラインツールがあります。非常に強力な暗号化である必要はありません。 –

+2

「cat」と呼ばれる非常に素晴らしいROT26ツールを使用してください。 –

答えて

3

LinuxのROT13についての説明があります。here私はそれをテストしていない:それは全く安全ではありませんが、あなたのニーズを満たすことが

$alias rot13="tr '[A-Za-z]' '[N-ZA-Mn-za-m]'"

2

ただし、これは16文字の制限にはなりません。

結果の出力:

-----BEGIN PGP MESSAGE----- 
Version: GnuPG v1.4.10 (GNU/Linux) 

jA0EAwMCnM6hI0xpVVFgyScCfr6Zo2fZeuiVWteZKeptcvSBj9wxk2gRMqTERtz9 
8dNUHZq2eRA= 
=Jpku 
-----END PGP MESSAGE----- 
+2

これについて考えてみると、入力として与えた正確な文字数を出力することが保証されている真の暗号化はないと私は信じています。上記のrot13のような確かな難読化手法がありますが、真の暗号化はありません。 – UtahJarhead

+1

同じサイズのワンタイムパッドを使用すると、常に強力な暗号化を生成できます(真の暗号化ではありません - rot13は絶対に真ですが、全く強くはありません)。 –

+0

はい、1回限りのパッドでは、テキストとパスワードを無作為に生成する必要があります(各文字の一様分布)。 – Jay

0

私にはわからない、これが使用されるセキュリティ要件の詳細ですので、私はあなたが与えた情報に基づいてお答えします何。あなたは以下を必要とします:

  • 強い暗号化;
  • 出力は入力と同じサイズでなければなりません。
  • 出力は人間が読めるものでなければなりません。

これらの要件のいずれかをあきらめるのは簡単です。そうでない場合は、標準のLinux/Unixツールでは不可能ではないにしても、難しくありません。標準のブロック暗号はブロック単位でデータをエンコードするので、入力と出力のサイズは同じですが、ビットシーケンスをビットシーケンスに変換し、出力が「読み取り可能」になるという保証はありません。その後、出力をHEX(base16)またはbase64でエンコードできますが、それが拡張されます(これはUtahJarheadの意味で「N文字制限に達しません」という意味です)。

可能な解決策(各破壊1つの要件)は次のとおりです。

  • 使用弱い暗号化(ROT13のような換字式暗号 - または、あなたはもう少し洗練された何かをしたい場合は、Vigenère cipherを実装していますが、思いそれをコード化しなければなりません - あるいは他人の実装を信頼する必要があります)。
  • AESや他のグッドブロック暗号を使用して暗号化し(前述のOpenSSL経由で)、出力でbase64を実行します。
  • は、AESやその他の適切なブロック暗号(OpenSSL経由)を使用して暗号化しますが、誰もがその出力を読むことを期待していません。

ワン最後のポイント:暗号化方式を考案し、実施するのは難しいものですし、関与あまりにも多くの微妙な違いがあるので、アドホック暗号化方式を作成することは...全く

を推奨されていませんedit:ワンタイムパッドを実装することができますが、テキストとパスワードの各文字を一様な分布で選択する必要がある限り、パスワードは必要ですアルファベット以上。パスワードをハッシュし、asciiでエンコードし、最初のn文字を取るのは、おそらくです[1]。

とにかく、プレーンテキストであるremeberは短すぎます(サイトや暗号化されたドキュメントへのパスワードのように)テストすることができます。敵対者は網羅的な検索を行うことができます。

[1]一部の暗号学者は、ハッシュ関数の出力を「ランダム」(「ランダムなOracleモデル」を使用しています)と見なすことに同意できません。ハッシュの符号化は、入力においてビットの一様な分布が与えられると、出力として文字の一様な分布が存在するようなものでなければならない。この「パッド」とメッセージを組み合わせると、1対1のマッピングでなければならないため、最終的な出力の分布は一様です。

+1

もしVigenereを実装するなら、enigmaのようなローターマシンを実装することもできます。同じ出力サイズにもなります。利用可能なエニグマの実装がありますが、デフォルトとしてインストールされていません。 –

+0

はい、良い点!エニグマも良いですが、現代的なブロック暗号と同じではありません... – Jay

関連する問題