pythonsha1解密
A. 如何使用python 3的兩個庫來加解密字元串
哈希
如果需要用到安全哈希演算法或是消息摘要演算法,那麼你可以使用標准庫中的 hashlib 模塊。這個模塊包含了符合 FIPS(美國聯邦信息處理標准)的安全哈希演算法,包括 SHA1,SHA224,SHA256,SHA384,SHA512 以及 RSA 的 MD5 演算法。Python 也支持 adler32 以及 crc32 哈希函數,不過它們在 zlib 模塊中。
哈希的一個最常見的用法是,存儲密碼的哈希值而非密碼本身。當然了,使用的哈希函數需要穩健一點,否則容易被破解。另一個常見的用法是,計算一個文件的哈希值,然後將這個文件和它的哈希值分別發送。接收到文件的人可以計算文件的哈希值,檢驗是否與接受到的哈希值相符。如果兩者相符,就說明文件在傳送的過程中未經篡改。
讓我們試著創建一個 md5 哈希:
>>> import hashlib >>> md5 = hashlib.md5() >>> md5.update('Python rocks!') Traceback (most recent call last): File "<pyshell#5>", line 1, in <mole> md5.update('Python rocks!') TypeError: Unicode-objects must be encoded before hashing >>> md5.update(b'Python rocks!') >>> md5.digest() b'\x14\x82\xec\x1b#d\xf6N}\x16*+[\x16\xf4w'
讓我們花點時間一行一行來講解。首先,我們導入 hashlib ,然後創建一個 md5 哈希對象的實例。接著,我們向這個實例中添加一個字元串後,卻得到了報錯信息。原來,計算 md5 哈希時,需要使用位元組形式的字元串而非普通字元串。正確添加字元串後,我們調用它的 digest 函數來得到哈希值。如果你想要十六進制的哈希值,也可以用以下方法:
>>> md5.hexdigest() ''
實際上,有一種精簡的方法來創建哈希,下面我們看一下用這種方法創建一個 sha1 哈希:
>>> sha = hashlib.sha1(b'Hello Python').hexdigest() >>> sha ''
可以看到,我們可以同時創建一個哈希實例並且調用其 digest 函數。然後,我們列印出這個哈希值看一下。這里我使用 sha1 哈希函數作為例子,但它不是特別安全,讀者可以隨意嘗試其他的哈希函數。
密鑰導出
Python 的標准庫對密鑰導出支持較弱。實際上,hashlib 函數庫提供的唯一方法就是 pbkdf2_hmac 函數。它是 PKCS#5 的基於口令的第二個密鑰導出函數,並使用 HMAC 作為偽隨機函數。因為它支持「加鹽(salt)」和迭代操作,你可以使用類似的方法來哈希你的密碼。例如,如果你打算使用 SHA-256 加密方法,你將需要至少 16 個位元組的「鹽」,以及最少 100000 次的迭代操作。
簡單來說,「鹽」就是隨機的數據,被用來加入到哈希的過程中,以加大破解的難度。這基本可以保護你的密碼免受字典和彩虹表(rainbow table)的攻擊。
讓我們看一個簡單的例子:
>>> import binascii >>> dk = hashlib.pbkdf2_hmac(hash_name='sha256', password=b'bad_password34', salt=b'bad_salt', iterations=100000) >>> binascii.hexlify(dk) b''
這里,我們用 SHA256 對一個密碼進行哈希,使用了一個糟糕的鹽,但經過了 100000 次迭代操作。當然,SHA 實際上並不被推薦用來創建密碼的密鑰。你應該使用類似 scrypt 的演算法來替代。另一個不錯的選擇是使用一個叫 bcrypt 的第三方庫,它是被專門設計出來哈希密碼的。
B. sha1 解密後的字元串是什麼意思
樓主是想在WEB.CONFIG文件中加密資料庫聯接字元串吧?
web.config中加密連接字元串
舊版本的ASP.NET將連接字元串直接保存在ASPX頁面中。回想一下,連接字元串包含了數據伺服器名稱和用戶賬戶等信息,有時候甚至還包含了密碼。在代碼中包含以上信息是非常不好的習慣,原因有二。首先,這些信息可以被設計小組中的每一位程序人員看到(但是站點訪問者不能在瀏覽器上看到)。第二,在整個Web站點中的每一個擁有該連接的地方,都必須進行維護和更新。更新密碼成為了一項繁重的工作。
ASP.NET 2.0提供了一個選項可以將連接字元串移動至Web.config文件的連接區域,給字元串一個名稱並將其加密。然後ASP.NET 2.0頁面就通過這個名稱來引用連接字元串。保存連接字元串至Web.config的步驟並不復雜。打開位於站點根目錄下的Web.config文件。找到被<connectionString>界定的區域(如果不存在,可自行添加)並在<Add>標記中輸入如下代碼。該標記有三個屬性:name、connectionString和providerName。屬性name就是將會在頁面中使用的連接字元串的普通名稱。connectionString屬性應當設置為連接至資料庫的完整的連接字元串,如前所述。
C. python的入門問題
這是HASH運算,不能解密(應該是無法解密,因為HASH要是被破解了,那說明HASH演算法自身有問題。目前SHA1的演算法還是安全的。MD5已經被破解了)。只能正向計算來驗證結果是否一致。
D. python 密文去掉k個數字求最大
創建一個大小為K的數據容器,利用最大堆找到最大。
創建一個大小為K的數據容器來存儲最小的K個數,然後遍歷整個數組,將每個數字和容器中的最大數進行比較,如果這個數大於容器中的最大值,則繼續遍歷,否則用這個數字替換掉容器中的最大值。
安全哈希加密技術,是當今世界最先近的加密演算法。主要用於文件身份識別、數字簽名和口令加密等。對於長度小於64位的消息A,SHA1會產生一個160位的消息摘要B。通過散列演算法可實現數字簽名實現,數字簽名的原理是將要傳送的明文通過一種函數運算轉換成報文摘要,報文摘要加密後與明文一起傳送給接受方,接受方將接受的明文產生新的報文摘要與發送方的發來報文摘要解密比較,如果不一致表示明文已被篡改。
E. python中如何獲取sha1值賦給變數
你好,我覺得你可以將openssl dgst -sha1的結果結果放到一個文件,然後讓python讀取那個文件,就可以了
os.system(openssl dgst -sha1 > log1)
with open(log1, "r") as f:
.......
F. Lib實現的流數據加密,Python怎麼解密
hashlib是python專門用來加密解密的庫,有md5, sha1, sha224, sha256, sha384, sha512。
Python的hashlib提供了常見的摘要演算法,如MD5,SHA1等等。
什麼是摘要演算法呢?摘要演算法又稱哈希演算法、散列演算法。它通過一個函數,把任意長度的數據轉換為一個長度固定的數據串(通常用16進制的字元串表示)。
函數
用於計算用戶名和密碼相加得到的加密值。
def calc_md5(username, password):
md5 = hashlib.md5()
str_dd = username + password
md5.update(str_dd.encode('utf-8')) return md5.hexdigest()12345
測試源碼
# coding = utf-8##################################################### coding by 劉雲飛####################################################import hashlib
test_string = '123456'md5 = hashlib.md5()
md5.update(test_string.encode('utf-8'))
md5_encode = md5.hexdigest()
print(md5_encode)
sha1 = hashlib.sha1()
sha1.update(test_string.encode('utf-8'))
sha1_encode = sha1.hexdigest()
print(sha1_encode)123456789101112131415161718
輸出結果為
G. 求一個DES 演算法 PHP python 通用 PHP進行加密 python解密
用hash唄。
import hashlib
a = "a test string"
print hashlib.md5(a).hexdigest()
print hashlib.sha1(a).hexdigest()
print hashlib.sha224(a).hexdigest()
print hashlib.sha256(a).hexdigest()
print hashlib.sha384(a).hexdigest()
print hashlib.sha512(a).hexdigest()
針對str類型的。
加密的話,可以對最後得出的hash值再處理即可。比如左移,右移,某2位替換,某位加幾等等即可。
解密直接用逆序就可以了。
H. sha1加密 python 可逆么
首先,它不可逆,沒有系統的方法可以知道MD5碼原來的文字是什麼
其次,這個碼具有高度的離散性,沒有規律可循。哪怕原信息的一點點變化就會導致MD5的巨大變化,也可以說產生的MD5 碼是不可預測的。
最後,由於這個碼有128位那麼長,所以任意信息之間具有相同MD5碼的可能性非常之低,通常被認為是不可能的。