ホームページ  >  記事  >  バックエンド開発  >  Python 文字列の暗号化と復号化を共有する 3 つの方法 (base64 win32com)

Python 文字列の暗号化と復号化を共有する 3 つの方法 (base64 win32com)

WBOY
WBOYオリジナル
2016-06-16 08:45:331788ブラウズ

1. 最も簡単な方法は、base64 を使用することです。

コードをコピー コードは次のとおりです:

import Base64

s1 =base64.encodestring('hello world')
s2 =base64.decodestring(s1)
print s1,s2

# aGVsbG8gd29ybGQ=n
# ハローワールド

注: これは最も単純な方法ですが、安全性が十分ではありません。他の誰かが暗号文を取得すると、自分自身で暗号化を解除して平文を取得することもできるためです


2. 2 番目の方法は、win32com.client

を使用することです。

コードをコピー コードは次のとおりです:

import win32com.client
def encrypt(key,content): # key: キー、コンテンツ: plaintext
EncryptedData = win32com.client.Dispatch('CAPICOM.EncryptedData')
EncryptedData.Algorithm.KeyLength = 5
EncryptedData.Algorithm.Name = 2
EncryptedData。 SetSecret( key)
EncryptedData.Content = content
return EncryptedData.Encrypt()

def decrypt(key,content): # key: key, content: ciphertext
EncryptedData = win32com.client.Dispatch('CAPICOM.EncryptedData')
EncryptedData.Algorithm.KeyLength = 5
EncryptedData .Algorithm.Name = 2
EncryptedData.SetSecret(key)
EncryptedData.Decrypt(content)
str = EncryptedData.Content
return str

s1 = encrypt('lovebread', 'hello world')
s2 = decrypt('lovebread', s1)
print s1,s2

# MGEGCSsGAQQBgjdYA6BUMFIGCisGAQQBgjdYAwGgRDBCAgMCAAECAmYBAgFABAgq
# GpllWj9cswQQh/fnBUZ6ijwKDTH9DLZmBgQYmfaZ3VFyS/lq391oDtjlcRFGnXpx
# l G7o
# hello world



注: この方法も非常に便利で、設定することもできますキーは最初の方法よりも安全であり、暗号化と復号化の最初の選択肢です。

3. 別のオプションは、次のような独自の暗号化および復号化アルゴリズムを作成することです。

コードをコピーします コードは次のとおりです:
def encrypt(key, s):
b = bytearray( str(s ).encode("gbk"))
n = len(b) # b
c = bytearray(n*2)
j = 0
のバイト数を求めます。 i 範囲 (0, n):
b1 = b[i]
b2 = b1 ^ key # b1 = b2^ key
c1 = b2 % 16
c2 = b2 // 16 # b2 = c2 *16+c1
[j] = c1
c [j+1] = c2
j = j+2

def decrypt(key, s):
c = bytearray(str(s).encode("gbk"))
n = len(c) # b のバイト数を計算します if n % 2 != 0 :

return ""
n = n // 2
b = bytearray(n)
j = 0
for i in range(0, n) :
c1 = c[j]
c2 = c[j+1]
j = j+2
c1 = c1 - 65
c2 = c2 - 65
b2 = c2 *16 + c1
b1 = b2^ key
b[i]= b1
try:
return b.decode("gbk")
ただし:
return "失敗しました「

key = 15
s1 = encrypt(key, 'hello world')
s2 = decrypt(key, s1)

print s1,'n',s2


# HGKGDGDGAGPCIHAGNHDGLG
# hello world

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。