暗号化されたテキストを人間が読み取れるようにする方法でパスワードを暗号化できる、1 つまたは複数の暗号化アルゴリズムを探しています。
たとえば、パスワードとして指定した場合:
StackOverflow
アルゴリズムは私に与えるべきです:
G0aThiR4i s0ieFer
したがって、人間が簡単に読み取れる暗号化されたパスワードを取得したいと考えています (特殊な文字や何千もの文字を含む奇妙な文字列ではありません)。
このニーズに合ったアルゴリズムはありますか?
暗号化されたテキストを人間が読み取れるようにする方法でパスワードを暗号化できる、1 つまたは複数の暗号化アルゴリズムを探しています。
たとえば、パスワードとして指定した場合:
StackOverflow
アルゴリズムは私に与えるべきです:
G0aThiR4i s0ieFer
したがって、人間が簡単に読み取れる暗号化されたパスワードを取得したいと考えています (特殊な文字や何千もの文字を含む奇妙な文字列ではありません)。
このニーズに合ったアルゴリズムはありますか?
RFC 1751 は、「人間が読み取れる 128 ビット キーの規約」を定義しています。基本的には、ビット ブロックを英単語の文字列にマッピングするだけです。
たとえば、次の 128 ビット キー:
CCAC 2AED 5910 56BE 4F90 FD44 1C53 4766
になるだろう
RASH BUSH MILK LOOK BAD BRIM AVID GAFF BAIT ROT POD LOVE
アルゴリズムは固定長の 128 ビット キーに使用され、これがデータ サイズのベースになります。ソース データは、ベースに一致するように切り捨てたり拡張したりできます。
C @ https://www.rfc-editor.org/rfc/rfc1751での仕様と実装
よく知られていません。仕様の 1 つと失われた python ライブラリへの参照を除いて、実装に関する言及が見つかりませんでした。
Step 1) Apply regular encryption algorithm.
Step 2) Base 26-encode it using letters a thru z
Step 3) ???
Step 4) Profit!
さらにクールなのは、英語のレターバイグラフ分布を取得することです。単純な疑似乱数アルゴリズムを選択し、人間が判読できないパスワード ハッシュをシードします。次に、アルゴリズムを使用して、英語で文字がその前の文字に続く可能性に応じて単語を作成します。本当に英語のように聞こえる単語を、一貫して同じシードから得ることができます。ただし、衝突の可能性は季節外れに高くなる可能性があります。
EncryptedPassword = Base64(SHA1(UTF8(パスワード) + Salt))
パスワードは文字列です
ソルトは暗号的に強力なランダムなバイト[]です
UTF8: 文字列 -> バイト[]
SHA1: バイト[] -> バイト[]
Base64: バイト[] -> 文字列
EncryptedPassword は文字列です
ストア (暗号化パスワード、ソルト)。
SHA1 の代わりに、必要な暗号化アルゴリズムを投入します。
たとえば、 password がStackOverflow
暗号化されたパスワードを取得する場合ですLlijGz/xNSRXQXtbgNs+UIdOCwU
。