如何使用PN序列将明文加密为密文?

2024-04-30 04:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个函数,使用PN序列将纯文本加密为密文。 但我不知道怎么做。有人有任何算法可以帮助我创建一个函数,可以帮助我构建加密函数


Tags: 函数文本算法序列pn密文
1条回答
网友
1楼 · 发布于 2024-04-30 04:53:08

该代码使用LFSR移位寄存器获得伪随机序列,然后将其与明文异或以获得密文。代码使用pylfsrnumpy

from pylfsr import LFSR

# The initial state
state = [0,0,0,1,0,1,0,1,0,1,1]
# The LFSR polynomial use a primitive polynomail to get maximum period length
poly = [5, 4, 3, 2]
l = LFSR(fpoly=poly, initstate =state)

message = b"This is a Test Message"
ciphertext = b""

# generate all LFSR sequence
allseq = l.runFullCycle()
seq = ""
seq_index = 0

# Convert LFSR bits into a string
for x in allseq:
    seq += str(x)

for counter in range(len(message)):
    ran_seq = seq[seq_index: seq_index+8]
    # Now encrypt by XOR convert to bytes and append to ciphertext
    ciphertext += bytes([int(message[counter]) ^ int(ran_seq, 2)])
    seq_index += 8  # Move sequence to Next byte

print(ciphertext)

plaintext = b""
# Reset The LFSR sequence to start from beginning
seq_index = 0
for counter in range(len(ciphertext)):
    ran_seq = seq[seq_index: seq_index+8]
    plaintext += bytes([int(ciphertext[counter]) ^ int(ran_seq, 2)])
    seq_index += 8

print(plaintext)

相关问题 更多 >