0

データを暗号化し、TCP ソケット経由でサーバーに送信しようとしています。ただし、次のコードでは ValueError: Key must be 128 bit long というエラーが表示されます。

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)

誰でもこれについてコメントできますか?

4

2 に答える 2

1

キー サイズを 16 バイトに増やします。

XTEA は、128 ビット キーを持つ 64 ビット ブロック Feistel 暗号です。"0wYwcOnn"(せいぜい)64ビットなので、誤解は何ですか?

于 2016-11-03T21:53:31.717 に答える
0

XTEA には 128 ビット (16 バイト) のキーが必要です。

長さが 16 バイト未満のキーのパディング スキームの 1 つは、16 バイトになるまでヌル バイトを単純にパディングすることです。Woobleirc://irc.freenode.net/#pythonの人によると、これはうまくいくはずです:

key2=struct.pack('16s', b"0wYwcOnn")
  • 16バイトになるまで、不足しているバイトをnullで埋めるだけです。(idk、私はpythonプログラミングをしません)
于 2019-03-04T13:42:07.307 に答える