Stream Ciphers

class sage.crypto.stream_cipher.LFSRCipher(parent, poly, IS)

Bases: sage.crypto.cipher.SymmetricKeyCipher

connection_polynomial()

The connection polynomial defining the LFSR of the cipher.

EXAMPLE:

sage: k = GF(2)
sage: P.<x> = PolynomialRing( k )
sage: LFSR = LFSRCryptosystem( k )
sage: e = LFSR((x^2+x+1,[k(0), k(1)]))
sage: e.connection_polynomial()
x^2 + x + 1
initial_state()

The initial state of the LFSR cipher.

EXAMPLE:

sage: k = GF(2)
sage: P.<x> = PolynomialRing( k )
sage: LFSR = LFSRCryptosystem( k )
sage: e = LFSR((x^2+x+1,[k(0), k(1)]))
sage: e.initial_state()
[0, 1]
class sage.crypto.stream_cipher.ShrinkingGeneratorCipher(parent, e1, e2)

Bases: sage.crypto.cipher.SymmetricKeyCipher

decimating_cipher()

The LFSR cipher generating the decimating key stream.

EXAMPLE:

sage: FF = FiniteField(2)
sage: P.<x> = PolynomialRing(FF)
sage: LFSR = LFSRCryptosystem(FF)
sage: IS_1 = [ FF(a) for a in [0,1,0,1,0,0,0] ]
sage: e1 = LFSR((x^7 + x + 1,IS_1))
sage: IS_2 = [ FF(a) for a in [0,0,1,0,0,0,1,0,1] ]
sage: e2 = LFSR((x^9 + x^3 + 1,IS_2))
sage: E = ShrinkingGeneratorCryptosystem()
sage: e = E((e1,e2))
sage: e.decimating_cipher()
LFSR cipher on Free binary string monoid
keystream_cipher()

The LFSR cipher generating the output key stream.

EXAMPLE:

sage: FF = FiniteField(2)
sage: P.<x> = PolynomialRing(FF)
sage: LFSR = LFSRCryptosystem(FF)
sage: IS_1 = [ FF(a) for a in [0,1,0,1,0,0,0] ]
sage: e1 = LFSR((x^7 + x + 1,IS_1))
sage: IS_2 = [ FF(a) for a in [0,0,1,0,0,0,1,0,1] ]
sage: e2 = LFSR((x^9 + x^3 + 1,IS_2))
sage: E = ShrinkingGeneratorCryptosystem()
sage: e = E((e1,e2))
sage: e.keystream_cipher()
LFSR cipher on Free binary string monoid

Previous topic

Stream Cryptosystems

Next topic

Linear feedback shift register (LFSR) sequence commands

This Page