我正在尝试加密数据并通过TCP套接字将其发送到我的服务器。但是我收到错误,ValueError:密钥必须是128位长,以下代码:
from xtea import *
from socket import *
import datetime
import time
import sys
clientsocket = socket(AF_INET,SOCK_STREAM)
clientsocket.connect(("xx.xx.xx.xx",1234))
key2="0wYwcOnn"
text = "$123456781|tx|id1^1.1^2015-09-29 16:38:44^2015-09-29 19:48:44"
x = new(key2, mode=MODE_ECB)
c = x.encrypt(text)
clientsocket.send(c)
recv = clientsocket.recv(1024)
print(recv)
有人可以对此发表评论吗?
答案 0 :(得分:1)
将密钥大小增加到16个字节。
XTEA是一个带有128位密钥的64位块Feistel密码。由于"0wYwcOnn"
是64位(充其量),误解是什么?
答案 1 :(得分:0)
XTEA需要128位(16字节)的密钥。
对于长度少于16个字节的键,一种可能的填充方案是简单地将其填充为空字节,直到它为16个字节为止。根据irc://irc.freenode.net/#python中的Wooble
人说,这应该可以工作:
key2=struct.pack('16s', b"0wYwcOnn")