-
Notifications
You must be signed in to change notification settings - Fork 0
/
bloc_c.py
109 lines (75 loc) · 2.23 KB
/
bloc_c.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
III) Bloc C
Complexes the code after substitution
"""
from configs.configs_setting import len_charac_group_b, len_charac_group_b, group_b, mini_add_group_b_charac, maxi_add_group_b_charac
from random import choice,randint
def get_random_charac_group_b():
mini, maxi = len_charac_group_b[0],len_charac_group_b[1]
charac_group = ""
for _ in range(mini,maxi):
charac_group = charac_group + choice(group_b)
return charac_group
def combine_charac_a(string_a, string_b):
"""
example:
string_a = A C E
string_b = B D F
---> ABCDEF
"""
string_c = ""
min_len = min(len(string_a), len(string_b))
for i in range(min_len):
string_c += string_a[i] + string_b[i]
if len(string_a) > len(string_b):
string_c += string_a[min_len:]
elif len(string_b) > len(string_a):
string_c += string_b[min_len:]
return string_c
def combine_charac_b(string_a):
"""
example:
string_a = ABC
string_b = get_random_charac_group_b()
---> AXXBXCXXXXX
"""
string_b = get_random_charac_group_b()
string_c = ""
min_len = min(len(string_a), len(string_b))
for i in range(min_len):
string_c += string_a[i] + string_b[i]
if len(string_a) > len(string_b):
string_c += string_a[min_len:]
elif len(string_b) > len(string_a):
string_c += string_b[min_len:]
return string_c
def combine_charac_c(plain_text,x):
"""
Randomly adds a character from group_b
character in the code in a random position, x times.
"""
plain_text = list(plain_text)
for _ in range(x):
position = randint(0,len(plain_text))
plain_text.insert(position, get_random_charac_group_b())
plain_text = ''.join(plain_text)
return plain_text
def obscur(string):
"""
Passes text over 3 algorithms
"""
string = combine_charac_a(string,get_random_charac_group_b())
string = combine_charac_b(string)
string = combine_charac_c(string,randint(mini_add_group_b_charac,maxi_add_group_b_charac))
return string
def remove_group_charac_b(code):
"""
Remove characters from group b
"""
new_text = ""
for element in code:
if element not in group_b:
new_text = new_text + element
return new_text