python实现knn算法案例,python knn算法实现
内容一、hashlib介绍二、hashlib库加密md5、无歧义代码加密2、混淆代码加密3、hashlib库加密sha256、sha384、sha512、多重加密(Salt加密)5、base64最近在完成商城案例作业时,遇到提交注册密码时是一串数字和字母,觉得不安全,遂研究起来加密。加密算法很多,索性学习了几个常用的(MD5、sha256、base64)。加密
一. hashlib的介绍
Python的hashlib提供了常用的总结算法,如MD5、SHA1等。
该算法也称为哈希算法和哈希算法。通过一个函数,它将任意长度的数据转换成固定长度的数据字符串(通常用十六进制字符串表示)。
可以调用python3的hashlib标准库中的SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法。
第二,用hashlib库加密md5。1.加密明确的代码导入hashlibdef JM _ MD5(密码):m=hashlib.md5 () # Build MD5对象m . update(password . encode(encoding= UTF-8 )#设置编码格式并将字符串添加到MD5对象password _ MD5=m . hex digest()# hex digest()将加密字符串生成十六进制数据字符串值返回密码,password _ MD5G=JM _ MD5( 123456 )print(g)结果 :(‘123456’, ‘e10adc3949ba59abbe56e057f20f883e’)。
2.混淆加密代码。我们知道update可以将值添加到集合(字典)或键-值对中。
在MD5加密中,可以起到字符串拼接的作用,即可以达到混淆加密的作用。
import hashlibdef hxjm _ MD5(password,Value): :param password:encrypted string:param Value:confused string:return:将混淆的加密结果转换为十六进制字符串并返回 m=hashlib . MD5(password . encode( UTF-8 ))m . update(Value . encode( UTF-8 ))pwd _ MD5=m . hex digest()返回password,Value,pwd _ md5j=hxjm _ md5 (123456 ,武汉)print (j) result: 010
(‘123456’, ‘wuhan’, ‘8ebbaf4714f033d20a0fef5f25ed63de’)
import import hashlibdef hxjm _ MD5(password):value=str(time . time())#获取当前时间戳,转换为字符串并赋给value print(当前时间: time.strftime(%H:%M:%S ,time . local time(time . time()))M=hashlib . MD5(password . encode( utf-8 ))M . update(value . encode( utf-8 ))pwd _ MD5=M . hex digest()返回密码,value,pwd _ md5
181344237.6187823是时间戳,可以用time.localtime(time.time())函数转换。
三。hashlib库对sha256、sha384和sha512的加密。sha256和sha512在python中基本相同,只是返回的摘要算法不同,代码中只演示了sha256。
def jm_sha256(key,Value=wuhan): :param key:明文密码:param value:混淆字符串:返回:混淆加密结果 hs obj=hashlib . sha 256(key . encode( UTF-8 ))hs obj . update(Value . encode( utf-8 ))返回hs obj . hex digest()print(JM _ sha 256( 123456 ))常见的加密方式:字符串添加当前时间戳生成一个唯一的MD5值并返回
四、多重加密(盐加密)一次MD5或sha256很容易被反编译或用穷举法编译。这时候就需要盐加密和多重加密来保证密码安全。
盐加密:就是在字符串中加入一个固定的或者随机的字符串,对拼接的结果进行加密。
多重加密:就是用多种算法对一个字符串进行加密,比如sha256(md5($pass))。
密码加密版本:01author: jasndate: 2020-02-10 导入哈希lib,random,string,Timedefjm _ sha 256(key): :param key:加密字符串:return:返回混淆后的加密秘密 # Value 10位随机盐值= 。join(random . sample(string . ascii _ letters str(time . time())),10))hs obj=hash lib . sha 256(key . encode( utf-8 ))hs obj . update(Value . encode( utf-8 ))return hs obj . hex digest()def JM _ MD5(key,Value= China ): :param key:encrypted string:param Value:fixed salt,用于混淆:return返回加密的机密问题 hsobj=hashlib.md5 (key.encode(的
5.base64加密差点忘了。我想比较一下其他几种加密方法。base64起不到加密的作用,但我还是写出来学习的好。
Base64编码被称为Base64,因为它使用64个字符来编码任意数据,类似地,还有Base32和Base16编码。标准Base64编码中使用的64个字符是:
Base64编码本质上是一种将二进制数据转换为文本数据的方案。对于非二进制数据,首先将其转换为二进制形式,然后每隔6个连续位计算其十进制值(2的6次方=64)。根据这个值在上面的索引表中找到对应的字符,最后得到一个文本串。
认识你好!的Base64编码结果为==SGVsbG8h==,原字符串长度为6个字符,编码长度为8个字符。每3个原字符用Base64编码成4个字符,编码前后长度比为4/3。这个长度比很重要——比原来的字符串长度短,你需要使用更大的编码字符集,这不是我们想要的;比率越大,需要传输的字符越多,传输时间越长。Base64之所以被广泛使用,是因为它在字符集的大小和长度比例之间取得了很好的平衡,它适用于各种场景。
结果:(‘123456’, ‘1581344237.6187823’, ‘4612dadda102056fcdbce06799b70940’)
Import 64a=这是一个测试 bs64=base64 . b 64 encode(a . encode( UTF-8 )# encode string print(bs64) Result:b dghpcybbcybhillc 3 q= debase 64=base64 . b 64 decode(bs64)# print(debs 64) Result:b 这是一个测试
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。