Pythonはaes暗号解読の様々な方法の解析を実現します。
引用子:
windowsでpython 3はpycryptdemoモジュールを使ってAs暗号解読を実現します。Aes暗号化には様々な方法があります。自分でインターネットを利用して知ることができます。AESは16ビットごとに暗号化され、keyとviは16ビットであることを保証します。余計なことを言わないで、直接コードを入れてください。
ここで先輩の言葉を引用すると、考えが重要です。具体的にどのように実現するかは、むしろその次です。
1 Aesは16ビットで暗号化されていますので、keyとivは両方とも言えます。直接に16ビットに設定することができます。
2着信したデータと転送したデータは一定の長さではないので、暗号化する時は16桁の倍数かどうかを判断し、足りなければ補完します。
3問題はデータを持ってからどうやってどこで切り取りますか?
1着信データを16桁で判断すると、何桁を補ったらいいか分かります。この数字をbytesタイプに変えます。python 3ではデフォルトのunicodeコードです。
2ペアがデータを取ったら、最後の方を切り取り、unicodeによって対応数字に変えます。相手はどこから切り取りますか?
3 unicodeとutf 8の関係を見て、utf 8はunicodeの実現の一つの方式です。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
windowsでpython 3はpycryptdemoモジュールを使ってAs暗号解読を実現します。Aes暗号化には様々な方法があります。自分でインターネットを利用して知ることができます。AESは16ビットごとに暗号化され、keyとviは16ビットであることを保証します。余計なことを言わないで、直接コードを入れてください。
import base64
from Crypto.Cipher import AES
from binascii import b2a_hex,a2b_hex
class PrpCrypt(object):
def __init__(self,key,iv):
self.key=key.encode('utf-8')
self.mode=AES.MODE_CBC
self.iv=iv.encode('utf-8')
def pad_byte(self, b):
'''
1 bytes 16
2 bytes 0
3 * , bytes
4
:param b: bytes
:return: bytes
'''
bytes_num_to_pad = AES.block_size - (len(b) % AES.block_size)
# python3 unicode
# byte_to_pad unicode 16 , bytes
# , ,
#
byte_to_pad = bytes([bytes_num_to_pad])
padding = byte_to_pad * bytes_num_to_pad
padded = b + padding
return padded
def encrypt(self,text):
'''
1 aes
2 text bytes
3 text
4 encrypt
5 16 , 16 base64 , base64
4 aes , , 4
:param text:
:return:
'''
cryptor = AES.new(self.key,self.mode,self.iv)
text = text.encode('utf-8')
text = self.pad_byte(text)
self.ciphertext = cryptor.encrypt(text)
cryptbase64 = base64.b64encode(b2a_hex(self.ciphertext)).decode('utf8')
return cryptbase64
def decrypt(self,text):
'''
1 ,
2 base64
3 aes
4 16 2
5 decrypt bytes
:param text:
:return:
'''
unpad = lambda s: s[:-ord(s[len(s) - 1:])]
base64Str = base64.b64decode(text.encode('utf8'))
cryptor = AES.new(self.key, self.mode, self.iv)
aesStr = cryptor.decrypt(a2b_hex(base64Str))
aesStr = str(unpad(aesStr), encoding='utf8')
return aesStr
if __name__ == '__main__':
data='sadfsasdgsdfgdsf123'
pc=PrpCrypt('daajanbaqa654321','1234567890123456')
redata = pc.encrypt(data)
print(redata)
result=pc.decrypt(redata)
print(result)
考え方:ここで先輩の言葉を引用すると、考えが重要です。具体的にどのように実現するかは、むしろその次です。
1 Aesは16ビットで暗号化されていますので、keyとivは両方とも言えます。直接に16ビットに設定することができます。
2着信したデータと転送したデータは一定の長さではないので、暗号化する時は16桁の倍数かどうかを判断し、足りなければ補完します。
3問題はデータを持ってからどうやってどこで切り取りますか?
1着信データを16桁で判断すると、何桁を補ったらいいか分かります。この数字をbytesタイプに変えます。python 3ではデフォルトのunicodeコードです。
2ペアがデータを取ったら、最後の方を切り取り、unicodeによって対応数字に変えます。相手はどこから切り取りますか?
3 unicodeとutf 8の関係を見て、utf 8はunicodeの実現の一つの方式です。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。