encrypt加密

自己写的一个类似sha256的加密函数

思路

今天不上流程图不行了,太烧脑

Created with Raphaël 2.2.0 开始 在16进制的原文本中 添加一个f,和很多1 三位三位做加法, 生成一个比原值 短的16进制值 16进制值长度是 否小于self.bit? 在16进制的原文本中 添加一个1,和很多0 结束 三位三位做加法, 生成一个比原值 短的16进制值 yes no

实现

这里不讲了,不好分段,直接上代码

def _get_hex(string):
	result = []
	for item in string:
		result.append(hex(ord(item))[2:])
	string2 = ''
	for i in result:
		string2 += str(i)
	return string2
class encrypt():
	def __init__(self,PreStr):
		self.string = PreStr
		self.bit = 32
		self.hexV = _get_hex(self.string)
		self.HV = {
    
    '0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15,'a':10,'b':11,'c':12,'d':13,'e':14,'f':15,'x':0,'d':0}
		print('your string is:%s'%_get_hex(self.string))
	def __str__(self):
		return '0x' + ''.join(self.Encrypt().split('0x'))
	def _hexadd(self,*arg):
		hexNum = ''
		sumNum = 0
		for i in arg:
			sumNum += self.HV[i]
		hexNum = hex(sumNum)
		return hexNum
	def _hex_bin(self,char):
		return bin(self.HV[char])
	def _c(self,char):
		if(char <  '一' or char > '龥'):
			return False
		return True
	def Encrypt(self):
		self.add()
		self.ENCRYPT()
		return self.hexV
	def add(self):
		for i in range(self.bit - len(self.hexV)):
			if(i == 0):
				self.hexV += '1'
			else:
				self.hexV += '0'
	def _add_enc(self,addval1,addval2):
		for i in range(self.bit - len(self.hexV)):
			if(i == 0):
				self.hexV += addval1
			else:
				self.hexV += addval2
	def compress(self):
		compressed = ''
		for i in range(self.bit):
			if(i + 1 == self.bit):
				compressed += self.hexV[-1]
			elif(i + 2 == self.bit):
				compressed += self._hexadd(self.hexV[i],self.hexV[i + 1])
			else:
				compressed += self._hexadd(self.hexV[i],self.hexV[i + 1],self.hexV[i + 2])
		self.hexV = compressed
	def ENCRYPT(self):
		num = 0
		while(len(self.hexV) <= self.bit):
			num += 1
			self._add_enc('f','1')
			self.compress()
		self.compress()
		self.add()

代码github地址

这里不坑人

我知道,有很多同学是顺着sha256进来的,这里就顺带讲一下吧
需要hashlib库文件
sha256的代码:

import hashlib
string = input('string:')
sha256 = hashlib.md5(eval("b'%s'"%string))
bin_sha256Value = sha256.digest()
hex_sha256Value = sha256.hexdigest()
print('-'*100)
print('sha256 of %s:'%string)
print('bin value:%s'%bin_sha256Value)
print('hex value:%s'%hex_sha256Value)
print('-'*100)

版权声明

版权归本文参考文献作者以及本人所有,转载请声明出处(懒得写就当没看见,不追究,自己知道就行)

作者

hit-road

拜拜,下课!

hit-road不定期跟新,不见不散!

猜你喜欢

转载自blog.csdn.net/weixin_42954615/article/details/106694401