2011-01-03 3 views
2

文字列が、char、DELまたは任意のASCIIのものである可能性のある数字システムであるとします。このASCII番号はtableです。どのようにしてプロパティの任意の文字列をPythonの数値に変換できますか?ASCIIと基底を持つ文字列の難読化128

#car = 35*128**3+99*128**2+97*128**1+114*128**0=75034866 
+0

どこから番号を取得していますか? – Falmarri

+0

ファルマリ:CHR-列からDECへ、おそらく簡単な方法 – hhh

+2

この「暗号化」と呼ぶことは大いに誤解を招きます。 –

答えて

7

これを試してみてください:

total = 0 
for c in "#car": 
    total <<= 7 
    total += ord(c) 
print total 

結果:

 
75034866 

は、元の文字列を取り戻すために、

結果:任意の長さの数値については

 
#car 
+0

ニース、base128の特別なケース –

0

、Pythonの2.xの中で小数点を使用するだけのPython 3.xでint型

「暗号化」についての考えはありません。

+0

Python intsは自動的にPython longに昇格します。 Python longは任意の精度です。 –

0

データを難読化するためのマッピングを探しています。

実際の暗号化では、トラップドア機能を使用する必要があります。一方的に計算するのは計算が簡単ですが、その逆は特定の情報なしでは計算が難しい機能です。

ほとんどの暗号化は、素因数分解に基づいています。アリスは2つの大きな素数を一緒に乗算し、結果をボブに返します。 Bobは、この大きな素数を使用して、暗号化機能を使用してデータを暗号化します。ボブの暗号化関数の逆関数を求めるには、2つの元の素数を知る必要があります(暗号化はありません)。これらの数字を見つけることは計算上非常にコストがかかる作業なので、暗号化されたデータは「安全」です。

これを正しく実装することは非常に困難です。データを安全に保管したい場合は、それを行うライブラリを探してください。

EDIT:私が説明したものは、公開鍵の暗号化であることを指定する必要があります。秘密鍵の暗号化は少し違った働きをします。重要なことは、暗号化されたデータがキーや何らかの並べ替えなしで解読するのが難しいと考えるための数学的基礎があることです。

+0

:あなたは毎週任意の10文字のASCIIパスワードを与えられていて、紙の上に持ち歩きたいのではなく、何らかの暗号化と秘密鍵を使用することをお勧めしますか? – hhh

+0

私はhttp://www.freenet.org.nz/ezPyCrypto/を見ているかもしれません。編集:AESやBlowfishをサポートしていないことが分かりました。これはおそらくあなたが使いたいものです。まもなく別のものを掲載します。 – overstood

+0

PyCryptoを使用してパスワードベースのAES暗号化を実装したブログ記事があります:http://eli.thegreenplace.net/2010/06/25/aes-encryption-of-files-in-python-with-pycrypto/ – overstood

関連する問題