「私はクリアテキストファイルになりたい」という解読テキストファイルに問題があります。暗号化されたテキストでPython AES Decryptが印刷されました
暗号化はうまくいきますが、復号化すると混在してテキストがクリアされ、データが暗号化されます。
今私は少しアマチュアですが、私は書くことがわかります。しかし、私はそれを得るためにあなたの助けが必要です。 def関数でビルドしようとしましたが、うまくいきませんでした。
暗号化のパディングが問題だと思っていますが、16バイトのテキストファイルでテストすると混合。テスト ため
#!/usr/bin/env python
from Crypto.Cipher import AES
from Crypto.Protocol.KDF import PBKDF2
from Crypto import Random
import os
file_path = raw_input("Enter File path: ")
if os.path.isdir(file_path): #check if the path exists
print "\nFile path founded, continue..\n"
else:
print "\nFile path is not correct\nExiting.\n"
exit(0)
file_name = raw_input("Enter File name: ")
full_path = file_path + file_name
if os.path.isfile(full_path):
print "\nFile name founded, continue..\n"
else:
print "\nFile name is not correct\nExiting.\n"
exit(0)
print "Now encrypt"
key_size = 32 #AES256
iterations = 10000
key = os.urandom(32)
read = open(full_path,'r+')
line = read.readline()
secret = line
length = 16 - (len(secret) % 16) #PKCS7 adds bytes of the length of padding
secret += chr(length) * length
read.close()
salt = Random.new().read(key_size) #salt the hash
iv = Random.new().read(AES.block_size)
derived_key = PBKDF2(key, salt, key_size, iterations)
cipher = AES.new(derived_key, AES.MODE_CBC, iv)
encodedtext = iv + cipher.encrypt(secret)
read = open(full_path, 'w')
read.write(encodedtext)
read.close()
print "Now decrypt"
key_size2 = 32 #AES256
iterations2 = 10000
read2 = open(full_path,'r')
line2 = read2.readline()
secret2 = line2
length2 = 16 - (len(secret2) % 16) #PKCS7 adds bytes of the length of padding
secret2 += chr(length2) * length2
read2.close()
dencodedtext2 = iv + cipher.decrypt(secret2)
read2 = open(full_path, 'w')
read2.write(dencodedtext2)
read2.close()
print "that worked?"
私は「/ ****/Dekstop/ /家と私は、ファイル与えた 『パスを与えた』テキストと 『test.txtのを私はクリアテキストファイル』 になりたいと私はクリアテキストfileԊԅԅᡶ䴈ᚖ↺髱준ქꂛ
なぜsecret2を印刷するときになりたい粁
悑晍㱣弧殲턕컫聅㇛좎䀋傖、これを得ました'dencodedtext2 = iv + cipher.decrypt(secret2)'の後にextは暗号化と混ざっていますか? どうすれば修正できますか? 何がすごくひどいですか?
ありがとうございました。
私は**解読の前にIV **を取り除いたのですか? 多くの場合、私は復号化の前にパディングを削除することができます。 例のどの場合ですか? – elad
私はその努力をしたいとは思っていません。特に、あなたが提供したコードは、問題の分解*に関して別の問題やそのための方法で機能を分割することに多大な努力をしていないからです。さらに、配列を分割し、配列の右側からバイトを削除する方法についても説明します。ロケット科学ではないでしょうか?まわりにはたくさんの例があるはずです。 –
お返事ありがとうございました。 – elad