3
我嘗試實施問題與AES的加密js和pycrypto
之間的通信在python服務器端我使用iv
加密字符串,並且一個passphrase
併發送iv與加密文本base64編碼到javascript客戶端端。然後我想decrypt
帶有用戶可以輸入的密碼的字符串。
蟒蛇 - 服務器
from Crypto.Cipher import AES
from Crypto import Random
iv = Random.get_random_bytes(16)
key = "1234567812345678"
aes = AES.new(key, AES.MODE_CFB, iv)
encrypted_text = base64.b64encode(aes.encrypt("this is a test.."))
iv = base64.b64encode(iv)
# send iv, encrypted_text to client
的JavaScript - 客戶端
// <script type="text/javascript"
src="http://crypto-js.googlecode.com/files/2.5.3-crypto-sha1-hmac-pbkdf2-blockmodes-aes.js">
</script>
// text, and iv is base64encoded from the python script
// key is a string from an <input type='text'>
decrypted = Crypto.AES.decrypt(text, key, {iv: iv, mode: new Crypto.mode.CFB});
有了這個例子中,我得到一個JavaScript錯誤
Uncaught URIError: URI malformed
但是,這只是一個例子 - 我嘗試了每個我能想到的base64編碼/解碼星座。我也試圖改變模式。但這些都是隨機測試,我想了解我真的必須做什麼。
- crypt-js需要什麼編碼?
- 我應該選擇哪種模式?
- 有什麼我應該改變在python服務器端?
- 什麼是填充?會不會有錯?
- 你可以推薦任何其他的JavaScript庫嗎?
非常感謝你,善良的reagards, samuirai
嘗試在Python中對您的數據進行URLEncoding,然後將其發送到JS客戶端..如「urllib.urlencode(data)」.. – 2012-03-05 10:28:51
如果仍有問題,請查看https://gist.github。 COM/marcoslin/8026990。 – marcoseu 2013-12-18 22:03:47