日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python代码加密解密_在python中加密 – 在Javascript中解密

發布時間:2023/12/4 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python代码加密解密_在python中加密 – 在Javascript中解密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

您的Python代碼和CryptoJS代碼存在許多問題:

>您使用隨機IV加密Python中的一些明文.如果要檢索該明文,則需要在解密期間使用相同的IV.沒有IV,明文就無法恢復.通常,IV只是前置于密文,因為它不必是秘密的.因此,您需要在解密期間讀取IV,而不是生成新的IV.

>您在CryptoJS中使用CBC模式(默認)而不是CFB模式.模式必須相同.另一個棘手的部分是CFB模式使用段大小進行參數化. PyCrypto默認使用8位段(CFB8),但CryptoJS僅針對128位(CFB128)的固定段實現.由于PyCrypto版本是可變的,您需要更改它.

> CryptoJS decrypt()函數將密文作為OpenSSL格式的字符串或CipherParams對象.由于您沒有OpenSSL格式的字符串,因此必須將密文轉換為對象.

> CryptoJS的密鑰應該是WordArray而不是字符串.

>使用相同的填充.如果使用CFB8,PyCrypto不會填充明文,但在使用CFB128時需要填充. CryptoJS默認使用PKCS#7填充,因此您只需要在python中實現該填充.

Python代碼(適用于版本2):

def pad(data):

length = 16 - (len(data) % 16)

return data + chr(length)*length

def unpad(data):

return data[:-ord(data[-1])]

def encrypt(message, passphrase):

IV = Random.new().read(BLOCK_SIZE)

aes = AES.new(passphrase, AES.MODE_CFB, IV, segment_size=128)

return base64.b64encode(IV + aes.encrypt(pad(message)))

def decrypt(encrypted, passphrase):

encrypted = base64.b64decode(encrypted)

IV = encrypted[:BLOCK_SIZE]

aes = AES.new(passphrase, AES.MODE_CFB, IV, segment_size=128)

return unpad(aes.decrypt(encrypted[BLOCK_SIZE:]))

JavaScript代碼:

var base64ciphertextFromPython = "...";

var ciphertext = CryptoJS.enc.Base64.parse(base64ciphertextFromPython);

// split iv and ciphertext

var iv = ciphertext.clone();

iv.sigBytes = 16;

iv.clamp();

ciphertext.words.splice(0, 4); // delete 4 words = 16 bytes

ciphertext.sigBytes -= 16;

var key = CryptoJS.enc.Utf8.parse("1234567890123456");

// decryption

var decrypted = CryptoJS.AES.decrypt({ciphertext: ciphertext}, key, {

iv: iv,

mode: CryptoJS.mode.CFB

});

console.log ( decrypted.toString(CryptoJS.enc.Utf8));

其他考慮:

您似乎想要使用密碼作為密鑰.密碼短語通常是人類可讀的,但密鑰則不是.您可以使用包含PBKDF2,bcrypt或scrypt等功能的密碼來派生密鑰.

上面的代碼并不完全安全,因為它缺乏身份驗證.未經驗證的密文可能會導致可行的攻擊和未被注意的數據操作.通常,加密然后MAC方案與良好的MAC功能一起使用,例如HMAC-SHA256.

總結

以上是生活随笔為你收集整理的python代码加密解密_在python中加密 – 在Javascript中解密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。