Beispiel #1
0
 def test_random2(self):
     for m in range(1, 7):
         n = 1 << m
         for length in range(0, 100, m):
             a = urandom(length, 'little')
             self.assertEQUAL(base2ba(n, ba2base(n, a), 'little'), a)
             b = bitarray(a, 'big')
             self.assertEQUAL(base2ba(n, ba2base(n, b), 'big'), b)
Beispiel #2
0
    def test_binary(self):
        a = base2ba(2, '1011')
        self.assertEqual(a, bitarray('1011'))
        self.assertEqual(ba2base(2, a), '1011')

        for a in self.randombitarrays():
            s = ba2base(2, a)
            self.assertEqual(s, a.to01())
            self.assertEQUAL(base2ba(2, s, a.endian()), a)
Beispiel #3
0
    def test_base64(self):
        a = base2ba(64, '/jH', 'big')
        self.assertEqual(a, bitarray('111111 100011 000111'))
        self.assertEqual(ba2base(64, a), '/jH')

        msg = os.urandom(randint(10, 100) * 3)
        s = base64.standard_b64encode(msg).decode()
        a = base2ba(64, s, 'big')
        self.assertEqual(a.tobytes(), msg)
        self.assertEqual(ba2base(64, a), s)
Beispiel #4
0
    def test_base32(self):
        a = base2ba(32, '7SH', 'big')
        self.assertEqual(a, bitarray('11111 10010 00111'))
        self.assertEqual(ba2base(32, a), '7SH')

        msg = os.urandom(randint(10, 100) * 5)
        s = base64.b32encode(msg).decode()
        a = base2ba(32, s, 'big')
        self.assertEqual(a.tobytes(), msg)
        self.assertEqual(ba2base(32, a), s)
Beispiel #5
0
    def test_hexadecimal(self):
        a = base2ba(16, 'F61', 'big')
        self.assertEqual(a, bitarray('1111 0110 0001'))
        self.assertEqual(ba2base(16, a), 'f61')

        for n in range(50):
            s = ''.join(choice(hexdigits) for _ in range(n))
            for endian in 'big', 'little':
                a = base2ba(16, s, endian)
                self.assertEQUAL(a, hex2ba(s, endian))
                self.assertEqual(ba2base(16, a), ba2hex(a))
Beispiel #6
0
 def test_explicit(self):
     data = [  #              n  little   big
         ('', 2, '', ''),
         ('1 0 1', 2, '101', '101'),
         ('11 01 00', 4, '320', '310'),
         ('111 001', 8, '74', '71'),
         ('1111 0001', 16, 'f8', 'f1'),
         ('11111 00001', 32, '7Q', '7B'),
         ('111111 000001', 64, '/g', '/B'),
     ]
     for bs, n, s_le, s_be in data:
         a_le = bitarray(bs, 'little')
         a_be = bitarray(bs, 'big')
         self.assertEQUAL(base2ba(n, s_le, 'little'), a_le)
         self.assertEQUAL(base2ba(n, s_be, 'big'), a_be)
         self.assertEqual(ba2base(n, a_le), s_le)
         self.assertEqual(ba2base(n, a_be), s_be)
Beispiel #7
0
 def test_random(self):
     for a in self.randombitarrays():
         for m in range(1, 7):
             n = 1 << m
             if len(a) % m == 0:
                 s = ba2base(n, a)
                 b = base2ba(n, s, a.endian())
                 self.assertEQUAL(a, b)
                 self.check_obj(b)
             else:
                 self.assertRaises(ValueError, ba2base, n, a)
Beispiel #8
0
 def test_oct(self):
     if sys.version_info[0] == 2:
         return
     for i in range(1000):
         s = oct(i)
         self.assertEqual(s[:2], '0o')
         a = base2ba(8, s[2:], 'big')
         self.assertEqual(ba2int(a), i)
         t = '0o%s' % ba2base(8, a)
         self.assertEqual(t, s)
         self.assertEqual(eval(t), i)
Beispiel #9
0
 def test_alphabets(self):
     for m, n, alpabet in [
         (1, 2, '01'),
         (2, 4, '0123'),
         (3, 8, '01234567'),
         (4, 16, '0123456789abcdef'),
         (5, 32, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),
         (6, 64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
          'abcdefghijklmnopqrstuvwxyz0123456789+/'),
     ]:
         self.assertEqual(1 << m, n)
         self.assertEqual(len(alpabet), n)
         for i, c in enumerate(alpabet):
             for endian in 'big', 'little':
                 self.assertEqual(ba2int(base2ba(n, c, endian)), i)
                 self.assertEqual(ba2base(n, int2ba(i, m, endian)), c)
Beispiel #10
0
from bitarray import util, bitarray
key = '0101010101010101'
bits = util.base2ba(16, key)
print("Original Key Given: {}".format(key))

permuted_choice_1 = [
    57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43,
    35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54,
    46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
]

permuted_choice_2 = [
    14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7,
    27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39,
    56, 34, 53, 46, 42, 50, 36, 29, 32
]

shift_amt = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]

key_pc1 = bitarray(56)
key_pc1.setall(0)
rounds = 1
for x in range(len(permuted_choice_1)):
    key_pc1[x] = bits[permuted_choice_1[x] - 1]

c = key_pc1[:28]
d = key_pc1[28:]

c_shift_left = c[1:] + c[:1]
d_shift_left = d[1:] + d[:1]
Beispiel #11
0
 def test_octal(self):
     a = base2ba(8, '0147', 'big')
     self.assertEqual(a, bitarray('000 001 100 111'))
     self.assertEqual(ba2base(8, a), '0147')
Beispiel #12
0
 def test_quaternary(self):
     a = base2ba(4, '0123', 'big')
     self.assertEqual(a, bitarray('00 01 10 11'))
     self.assertEqual(ba2base(4, a), '0123')
Beispiel #13
0
from __future__ import print_function
from bitarray.util import urandom, pprint, ba2base, base2ba

a = urandom(60)

for m in range(1, 7):
    n = 1 << m
    print("----- length: %d ----- base: %d ----- " % (m, n))
    pprint(a, group=m)
    rep = ba2base(n, a)
    print("representation:", rep)
    print()
    assert base2ba(n, rep) == a
Beispiel #14
0
 def test_upper(self):
     self.assertEqual(base2ba(16, 'F'), bitarray('1111'))
Beispiel #15
0
 def test_empty(self):
     for n in 2, 4, 8, 16, 32, 64:
         a = base2ba(n, '')
         self.assertEqual(a, bitarray())
         self.assertEqual(ba2base(n, a), '')
Beispiel #16
0
 def test_base2ba(self):
     _set_default_endian('big')
     for c in 'e', 'E', b'e', b'E', u'e', u'E':
         a = base2ba(16, c)
         self.assertEqual(a.to01(), '1110')
         self.assertEqual(a.endian(), 'big')
Beispiel #17
0
def base16_2ba(s, endian=None):
    return base2ba(16, s, endian)