-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDecryption.py
More file actions
69 lines (66 loc) · 2.72 KB
/
Decryption.py
File metadata and controls
69 lines (66 loc) · 2.72 KB
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
def splitPoint(point,decimalPrecision):
integer = int(point*decimalPrecision/decimalPrecision)
fraction = round((point*decimalPrecision) - integer*decimalPrecision)
# print("integer,fraction", integer,fraction, (point*decimalPrecision), integer*decimalPrecision)
return integer,fraction
def decrypt(x,y,CMT):
FPPB = CMT['config']['FPPB']
FPPDigits = CMT['config']['FPPDigits']
FPPDecimal = 10**FPPDigits
integerX,fractionX = splitPoint(x,FPPDecimal)
integerY,fractionY = splitPoint(y,FPPDecimal)
xmin = integerX - (integerX % CMT['config']['width'])
ymin = integerY - (integerY % CMT['config']['width'])
key = CMT['data'][xmin][ymin]
result = ((((fractionX << FPPB) + fractionY)^key)%CMT['config']["totalChars"])
# print("decrypted, x, y, integerX,fractionX,integerY,fractionY,xmin,ymin,key,result", x, y, integerX,fractionX,integerY,fractionY,xmin,ymin,key,result)
return chr(result)
def decryptString(String, CMT):
# print("String: ", String)
data = String.split(" ")
decryptedString = ""
# print(data)
# print(len(data) - 1)
i = 0
while i < len(data) - 1:
x, y = float(data[i]), float(data[i+1])
# print("x, y: ", x, y)
i += 2
decryptedString += decrypt(x, y, CMT)
# for i in range(len(data) - 1):
# x, y = float(data[i]), float(data[i+1])
# print("x, y: ", x, y)
# i += 2
# decryptedString += decrypt(x, y, CMT)
return decryptedString
def decryptToByte(x,y,CMT):
totalChars=256
FPPB = CMT['config']['FPPB']
FPPDigits = CMT['config']['FPPDigits']
FPPDecimal = 10**FPPDigits
integerX,fractionX = splitPoint(x,FPPDecimal)
integerY,fractionY = splitPoint(y,FPPDecimal)
xmin = integerX - (integerX % CMT['config']['width'])
ymin = integerY - (integerY % CMT['config']['width'])
key = CMT['data'][xmin][ymin]
result = ((((fractionX << FPPB) + fractionY)^key)%totalChars)
# print("decrypted, x, y, integerX,fractionX,integerY,fractionY,xmin,ymin,key,result", x, y, integerX,fractionX,integerY,fractionY,xmin,ymin,key,result)
return result
def decryptToByteArray(String, CMT):
# print("String: ", String)
data = String.split(" ")
decryptedArray = []
# print(data)
# print(len(data) - 1)
i = 0
while i < len(data) - 1:
x, y = float(data[i]), float(data[i+1])
print("x, y: ", x, y)
i += 2
decryptedArray.append(decryptToByte(x, y, CMT))
# for i in range(len(data) - 1):
# x, y = float(data[i]), float(data[i+1])
# print("x, y: ", x, y)
# i += 2
# decryptedString += decrypt(x, y, CMT)
return decryptedArray