Python三 加密(hashlib和hmac)模块的实现,python3hash

2019-04-07 23:34栏目:程序人生

     create table A(info1 varchar(30))

insert into A (info1)values('www.maomao365.com')
insert into A (info1)values('猫猫小屋')
insert into A (info1)values('mssql教程专用')
insert into A (info1)values('mssql函数用法简介') 

select HASHBYTES('Md5',info1) as [md5加密], 
HASHBYTES('SHA1',info1) as [SHA1加密],
info1 from A 

truncate table A
drop table A 

其加密结果示例如下:

2019.02.20
通过MVC的一个[ValidateAntiForgeryToken]特征学习到了“跨网址请求伪造”(CS翼虎F(Cross-site request forgery))这些概念,意思正是第二方站点利用漏洞站点对浏览器cookie的依赖,发送虚假请求,从而做出壹些未经用户许可的操作,前提是用户未脱离信任站点的对话,并且相信站点在该地产生了cookie。从前的确没怎么在意那一个细节,只是现在支出的WebAPI项目中一贯未有用到cookie,连session也没用,所以应当是平安的。

Python三 加密(hashlib和hmac)模块的兑现,python三hashlib

以下代码以Python叁.6.1为例

  1. hashlib : 不可逆加密
  2. hmac : 不可逆键值对艺术加密

hashlib模块简介:

ca888会员登录,hashlib模块为差异的安全哈希/安全散列(Secure Hash Algorithm)和 新闻摘要算法(Message Digest Algorithm)完结了贰个公家的、通用的接口,也足以说是多少个联合的输入。因为hashlib模块不仅仅是构成了md五和sha模块的法力,还提供了对更加多中算法的函数达成,如:MD5,SHA一,SHA2二4,SHA256,SHA3八4和SHA51二。

hashlib模块使用手续:

一)获取1个哈希算法对应的哈希对象(比如名为hash): 能够经过 hashlib.new(哈希算法名称, 初叶出入音讯)函数,来博取这几个哈希对象,如hashlib.new('MD五', 'Hello'),hashlib.new('SHA1', 'Hello')等;也能够通过hashlib.哈希算法名称()来取得这些哈希对象,如hashlib.md5(), hashlib.sha一()等。

贰)设置/追加输入音讯: 调用已获得哈希对象的update(输入新闻)方法能够设置或扩展输入音信,数十次调用该措施,等价于把每一回传递的参数凭借后展开作为1个参数垫底给update()方法。也等于说,多次调用是增进,而不是覆盖。

三)获取输入消息对应的摘要: 调用已获得的哈希对象的digest()方法或hexdigest()方法即可取得传递给update()方法的字符串参数的摘要新闻。digest()方法重回的摘要音信是二个二进制格式的字符串,其中恐怕含有非ASCII字符,包蕴NUL字节,该字符串长度可以通过哈希对象的digest_size属性获取;而hexdigest()方法再次回到的摘要音信是叁个16进制格式的字符串,该字符串中只含有16进制的数字,且长度是digest()重临结果长度的二倍,那可用邮件的安全交互或其余非贰进制的条件中。

#!/usr/bin/env python
# coding=utf-8
__author__ = 'Luzhuo'
__date__ = '2017/5/19'
# hash_demo.py Hash加密相关(安全哈希)
# 支持: MD5, SHA1 SHA224 SHA256 SHA384 SHA512


import hashlib


def hash_demo():
  m = hashlib.md5()
  m.update(b"hello")
  m.update(b"world!") # = hello   world!

  hash_hex = hashlib.sha3_512(b"luzhuo.me").hexdigest()

  print(m.digest_size)
  print(m.digest()) # 二进制hash
  print(m.hexdigest()) # 十六进制hash
  print(hash_hex)

  # 加盐加密
  hash_bytes = hashlib.pbkdf2_hmac('sha256', b'luzhuo.me', b'80', 100000)
  print(hash_bytes)



def hash_func():
  # hashlib.new(name[, data]) // 创建hashlib(非首选), name=算法名, data:数据
  hash = hashlib.new('ripemd160', b'luzhuo.me')

  # 常量
  dics = hashlib.algorithms_guaranteed # 所有平台支持的hash算法的名称
  dics = hashlib.algorithms_available # 在Python解析器中可用的hash算法的名称, 传递给new()时, 可识别

  # hashlib.pbkdf2_hmac(hash_name, password, salt, iterations, dklen=None) // 加盐加密 hash_name:hash名称, password:数据, salt:盐, iterations:循环次数, dklen:密钥长度
  hash_bytes = hashlib.pbkdf2_hmac('sha256', b'luzhuo.me', b'80', 100000)

  # hash对象
  num = hash.digest_size # hash结果的大小
  num = hash.block_size # hash算法的内部块的大小
  strs = hash.name # hash名称, 可传给new()使用
  hash.update(b"data") # 字节缓冲区 hash.update(a) hash.update(b) == hash.update(a b)
  hash_bytes = hash.digest() # 字节hash
  hash_str = hash.hexdigest() # 16进制字符串hash
  hash = hash.copy() # 拷贝hash对象副本



if __name__ == "__main__":
  hash_demo()

  # hash_func()

hashmac模块简介:

后边说过,HMAC算法也是1种一种单项加密算法,并且它是基于上边种种哈希算法/散列算法的,只是它能够在运算进程中选用八个密钥来增增强安全性。hmac模块达成了HAMC算法,提供了相应的函数和措施,且与hashlib提供的api基本壹致。

hmac模块使用手续:

hmac模块模块的使用手续与hashlib模块的使用手续基本壹致,只是在第2步获取hmac对象时,只好利用hmac.new()函数,因为hmac模块未有提供与具象哈希算法对应的函数来博取hmac对象。

#!/usr/bin/env python
# coding=utf-8
__author__ = 'Luzhuo'
__date__ = '2017/5/19'
# hmac_demo.py HMAC算法
# 与hashlib不同之处在于多了key

import hmac


def hmac_demo():
  # 加密
  h = hmac.new(b"net")
  h.update(b"luzhuo.me")
  h_str = h.hexdigest()
  print(h_str)

  # 比较密码
  boolean = hmac.compare_digest(h_str, hmac.new(b"net", b"luzhuo.me").hexdigest())
  print(boolean)



def hmac_func():
  # 创建key和内容,再都进行加密
  # hmac.new(key, msg=None, digestmod=None) // 创建新的hmac对象, key:键, msg:update(msg), digestmod:hash名称(同hashlib.new())(默认md5)
  hc = hmac.new(b"key")

  # hmac对象
  hc.update(b"msg") # 字节缓冲区 hc.update(a) hc.update(b) == hc.update(a b)
  hash_bytes = hc.digest() # 字节hash
  hash_str = hc.hexdigest() # 16进制hash字符串
  hc = hc.copy() # 拷贝hmac副本
  num = hc.digest_size # hash大小
  num = hc.block_size # hash算法内部块大小
  strs = hc.name # hash名称
  # hmac.compare_digest(a, b) // 比较两个hash密钥是否相同, 参数可为: str / bytes-like object, (注:建议使用,不建议使用a==b)
  boolean = hmac.compare_digest(hmac.new(b"net", b"luzhuo.me").digest(), hmac.new(b"net", b"luzhuo.me").digest())




if __name__ == "__main__":
  hmac_demo()

  # hmac_func()

如上就是本文的全体内容,希望对大家的上学抱有协理,也指望大家多多协理帮客之家。

加密(hashlib和hmac)模块的完毕,python三hashlib 以下代码以Python三.陆.一为例 hashlib : 不可逆加密 hmac : 不可逆键值对章程加密 hashlib模块简介:...

二、mssql sql hashbytes 举例应用

ca888会员登录 1

2、sys.fn_sqlvarbasetostr用于把字节流类型varbinary,转化成字符流varchar
三、substring('原始字符串','开始地点','截取长度')字符串截取。有有个别急需专注的是,sql跟C#次第差异的是,初叶地方是从一上马的,不是0,别算错了

例2:

SHA一(str)/SHA(str)函数总括字符串str的161人SHA-一校验和。再次来到值是贰个由3玖个十6进制数字组合的二进制串。若是变量为NULL,则赶回NULL。

前一周没有怎么太专题的东西,就流水账记一下。近来始发动手转型Asp.net MVC,就算已经落二〇二〇时代几条街,但是依旧赶赶追追。有局地太细的点记在本人的笔记里,就不记到此处了,每一次发天涯论坛都以第四回编写,希望能扩展回忆。

参数1:
输入加密类型 例:MD伍
参数2:
输入待加密的字符串(加密字符串最大值为 九千字节)
返回值:
重临值最大为8000字节
注意事项:
当输入加密类型,很是时,再次来到NULL

  • PASSWORD()

2019.02.21
汇合类型的两种采取思路:
一.比方你回去的联谊是只用于遍历,不可修改的,则赶回IEnumerable<T>
二.如若回去的集合须要修改,如添加和删除成分,用ICollection<T>
三.比方回去的集聚供给援救排序,索引等,用IList<T>
四.只要回去的聚众要协助索引,但不能够丰盛,删除成分,用ReadOnlyCollection<T>

例1:

那几个难题可能导致数据值的转移。1般而言,上述难点可能在你利用非二进制串数据类型(如char,varchar,text等数据类型)的气象下发生。

2019.02.22
1、泛型:Func<T, bool>,Expression<Func<T, bool>>用法
Func<T, bool>:.net系统自定义了三种委托,有重临值的Func,无重返值的Action。而Func的最终1个参数总是委托的归来类型。
Expression<Func<T, bool>>:是1种表明式,EF中where供给的门类
例如:

   DECLARE @info nvarchar(4000);  
SET @info = CONVERT(nvarchar(4000),'www.maomao365.com');  
SELECT HASHBYTES('SHA1', @info);   ---返回采用SHA1加密
SELECT HASHBYTES('MD5', @info);    ---返回采用MD5加密
SELECT HASHBYTES('MD2', @info);    ---返回采用MD2加密

PASSWOMuranoD(str):该函数用来加密存款和储蓄在user表中 password列的MySQL密码。PASSWOXC90D()函数由MySQL服务器中的认证系统运用,用户不应有在大团结的应用中应用该函数。借使须求使用加密函数,能够思虑接纳MD5()也许SHA一()来取代。

在那之中,'待加密的值'要一点都十分小心,赋的值相同,若是类型分裂,获得的md五相差甚远。例如:varchar,nvarchar,因为他俩的实际存款和储蓄大小不一致。

 

在MySQL的种类数据库mysql的user表中,有贰个名称叫Password的列,个中保存由password函数加密后的user的密码数据。如下所示:

//正确的代码Expression<Func<QuestionFeed, bool>> predicate=null;if (type == 1){  predicate = f => f.FeedID == id && f.IsActive == true;}else{  predicate = f => f.FeedID == id;}_questionFeedRepository.Entities.Where(predicate);

版权声明:本文由ca888发布于程序人生,转载请注明出处:Python三 加密(hashlib和hmac)模块的实现,python3hash