base64 encoding

언어/python2017. 9. 16. 15:09

아직 제어할께 많다 .일단은 3자리 만 커버

import math as mat
class Base64Table:
def __init__(self):
self.table = {} # data dictionary
self.PlainTextString = "" # data String
self.CipherTextString = "" # data String
self.DecryptTextString = ""
self.TotalList = [] # data list
self.CipherList = []

# [ _self.base64_ ]
def Setting(self):
v = [] # empty list
k = []
v.extend([chr(i) for i in range(ord('A'), ord('Z')+1)]) # A, B, C, D, E, ... ,Z
v.extend([chr(i) for i in range(ord('a'), ord('z')+1)]) # a, b, c, d, e, ... ,z
v.extend([chr(i) for i in range(ord('0'), ord('9')+1)]) # 0, 1, 2, 3, 4, ... ,9
v.append(' ')
v.append('/')
k.extend([i for i in range(0, len(v))])

for s in zip(k, v):
self.table[s[0]] = s[1]
print (self.table)

# [ _plainText String_ ]
def PlainTextWrite(self):
self.PlainTextString = input("plainText Write : ")
for p in self.PlainTextString:
s = ['0']
s.extend(list(bin(ord(p)))[2:])
self.TotalList.extend(s)
print (self.TotalList)

# [ _Encoding_ ]
def B64encoding(self):
s = int(len(self.TotalList)/6)
#print (s)
sValue = 0
eValue = 6
for i in range(0, s):
#print ("sValue => {sv} eValue => {ev}".format(sv = sValue, ev = eValue))
s = ""
k = [] # empty list ... !!!
k.extend(self.TotalList[sValue:eValue])
# print (k) # this is test ... !!!
k.reverse()
#print ("REV => {R}".format(R = k))
BinToHex = [int(k[i])*int(mat.pow(2, i)) for i in range(0, 6)]
#print (BinToHex)
s = sum(BinToHex)
self.CipherTextString += self.table[s]
sValue = eValue
eValue += 6
print ("self.CipherTextString => {c}".format(c = self.CipherTextString))

# [ _Decoding_ ]
def B64decoding(self):
s = int(len(self.TotalList)/8)
#print (s)
sValue = 0
eValue = 8
for i in range(0, s):
#print ("sValue => {sv} eValue => {ev}".format(sv = sValue, ev = eValue))
s = ""
k = [] # empty list ... !!!
k.extend(self.TotalList[sValue:eValue])
# print (k) # this is test ... !!!
k.reverse()
#print ("REV => {R}".format(R = k))
BinToHex = [int(k[i])*int(mat.pow(2, i)) for i in range(0, 8)]
#print (BinToHex)
s = sum(BinToHex)
print(s)

self.DecryptTextString += chr(s)
sValue = eValue
eValue += 8
print("self.DecryptTextString => {d}".format(d=self.DecryptTextString))

def main():
s = Base64Table()
s.Setting()
s.PlainTextWrite()
s.B64encoding()
s.B64decoding()
if __name__ == "__main__":
main()


'언어 > python' 카테고리의 다른 글

파이썬 특정 문자열 카운팅  (0) 2017.09.24
BigData + graph  (0) 2017.09.21
문제5  (0) 2017.08.30
문제 4  (0) 2017.08.30
문제 3  (0) 2017.08.30