基于python的文件加密传输_python-通过TCP套接字进行AES加密的文件传输...

我正在尝试使用带有AES 256的加密TCP套接字进行文件传输.

>如果我传输的文件没有加密,则可以正常工作.

>如果我将小的命令(例如“ ipconfig”)发送到客户端或服务器,则加密工作正常.

>无论文件大小如何,我都会不断收到以下错误消息:

DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)

File "/usr/lib/python2.6/base64.py", line 76, in b64decode

raise TypeError(msg)

TypeError: Incorrect padding

我的编码和解码功能如下(hat变量是消息):

def AESENC(hat,typ):

BLOCK_SIZE = 32

PADDING = '{'

pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING

EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))

DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)

secret = '01234567890123456789012345678912'

IV = 'wir&/>H54mgd9a";'

cipher = AES.new(secret,AES.MODE_CFB,IV)

if typ == 0:

encoded = EncodeAES(cipher, hat)

return encoded

else:

decoded = DecodeAES(cipher, hat)

return decoded

客户端

if os.path.exists(df):

print ' found the file '

f = open(df, 'rb')

packet = f.read(1024)

while packet != '':

s.send(AESENC(packet,0))

s.send( AESENC('123XXX',0) )

s.send('123XXX')

f.close()

服务器端

f = open('/root/Desktop/Transfer.mp3','wb')

while True:

bits = AESENC ( conn.recv(1024) , 1 )

while (bits):

f.write(bits)

bits = AESENC ( conn.recv(1024) , 1 )

if bits.endswith('123XXX'):

print '[+] Transfer completed '

break

f.close()

break

return

有人知道如何解决此问题吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值