【澳门永利4437】2019周笔记(二.18-二.23)

转自:http://www.maomao365.com/?p=4732

这几个主题素材大概导致数据值的变动。一般来说,上述难题恐怕在你采用非2进制串数据类型(如char,varchar,text等数据类型)的事态下产生。

下周未有什么太专题的事物,就流水账记一下。近年来始发初叶转型Asp.net
MVC,即使1度落2020时代几条街,然则照旧赶赶追追。有局地太细的点记在作者的笔记里,就不记到此地了,每便发新浪都以第三次编写,希望能扩张回忆。

Python3 加密(hashlib和hmac)模块的兑现,python叁hashlib

以下代码以Python3.陆.一为例

  1. hashlib : 不可逆加密
  2. hmac : 不可逆键值对章程加密

hashlib模块简单介绍:

hashlib模块为分裂的安全哈希/安全散列(Secure Hash Algorithm)和
音信摘要算法(Message Digest
Algorithm)实现了五个共用的、通用的接口,也足以说是1个统一的输入。因为hashlib模块不仅仅是整合了md5和sha模块的效应,还提供了对更加多中算法的函数达成,如:MD伍,SHA1,SHA2二4,SHA25陆,SHA3八4和SHA51二。

hashlib模块使用手续:

一)获取二个哈希算法对应的哈希对象(比如名为hash): 可以通过
hashlib.new(哈希算法名称,
初阶出入新闻)函数,来收获这么些哈希对象,如hashlib.new(‘MD五’,
‘Hello’),hashlib.new(‘SHA一’,
‘Hello’)等;也足以由此hashlib.哈希算法名称()来得到那么些哈希对象,如hashlib.md5(),
hashlib.sha一()等。

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

三)获取输入音信对应的摘要:
调用已获取的哈希对象的digest()方法或hexdigest()方法就能够获取传递给update()方法的字符串参数的摘要音讯。digest()方法重回的摘要新闻是二个2进制格式的字符串,在那之中可能包括非ASCII字符,包蕴NUL字节,该字符串长度能够通过哈希对象的digest_size属性获取;而hexdigest()方法重临的摘要音讯是多个1陆进制格式的字符串,该字符串中只包罗1陆进制的数字,且长度是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种1种单项加密算法,并且它是依靠上边各类哈希算法/散列算法的,只是它能够在运算进度中央银行使贰个密钥来增巩固安全性。hmac模块达成了HAMC算法,提供了相应的函数和情势,且与hashlib提供的api基本一致。

hmac模块使用手续:

hmac模块模块的利用手续与hashlib模块的选择手续基本1致,只是在第3步获取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
函数简单介绍

  • AES_ENCRYPT()和AES_DECRYPT()

2019.02.19
原先都以在C#程序中向来生成MD伍,那贰次出于逻辑须要,要在SQL
直接生成MD5,学习了三个话语:
select
substring(sys.fn_sqlvarbasetostr(HashBytes(‘MD5′,’123456’)),3,32)
接下来开始展览了散落得到以下文化:
壹、–HashBytes (‘加密形式’,
‘待加密的值’)–(有个问号,为啥他的回来类型是二进制,最后select出来的确实0x起先的16进制???)
–加密方法= MD贰 | MD四 | MD伍 | SHA | SHA壹
–重回值类型:varbinary(maximum 八千 bytes)
select HashBytes(‘MD5′,’123456’)
–HashBytes生成的结果为:0xE10ADC394玖BA59ABBE5陆E057F20F8八三E

hashbytes函数功效为:重返1个字符,
通过 MD2、MD4、MD5、SHA、SHA1、SHA2_256、SHA2_永利皇宫,512格局加密后的重回值

AES_澳门永利4437,ENCRYPT()和AES_DEC哈弗YPT()可以加密/解密使用官方AES算法的多寡。该算法使用1二十10人密钥来编码,但用户能够将其扩展到2五二十位。MySQL选用126个人密钥,因为这么算法落成更加快,而且对繁多用户来讲它也丰裕安全了。

在那之中,’待加密的值’要比十分的小心,赋的值同样,如若类型差别,获得的md五天壤之别。比方:varchar,nvarchar,因为她们的莫过于存款和储蓄大小不平等。

hashbytes(‘参数1’,’参数2’)

澳门永利娱场app,AES_ENCRYPT(str,key_str)函数加密八个字符串并赶回三个二进制串。AES_DECRYPT(crypt_str,
key_str) 函数能够解密使用官方AES(Advanced Encryption
Standard)算法加密的数量并赶回原有字符串,输入变量能够是专擅长度。即便输入变量为NULL,那么该函数重临结果也为NULL。

2、sys.fn_sqlvarbasetostr用于把字节流类型varbinary,转化成字符流varchar
三、substring(‘原始字符串’,’开始地点’,’截取长度’)字符串截取。有少数索要留意的是,sql跟C#先后分歧的是,先导地点是从一起初的,不是0,别算错了

参数1:
输入加密类型 例:MD5
参数2:
输入待加密的字符串(加密字符串最大值为 7000字节)
返回值:
重返值最大为8000字节
注意事项:
当输入加密类型,卓殊时,重临NULL

因为AES是二个块级算法,供给选用补白来编码非偶数长度的字符串。

2019.02.20
通过MVC的一个[ValidateAntiForgeryToken]特征学习到了“跨网址请求伪造”(CS奥迪Q3F(克罗丝-site
request
forgery))这一个概念,意思就是第一方站点利用漏洞站点对浏览器cookie的相信,发送虚假请求,从而做出一些未经用户许可的操作,前提是用户未脱离信任站点的对话,并且相信站点在本土产生了cookie。在此以前真的没怎么放在心上这么些细节,只是未来支出的WebAPI项目中常有未曾用到cookie,连session也没用,所以理应是高枕而卧的。

贰、mssql sql hashbytes
举个例子应用

  • ENCODE()和DECODE()

2019.02.21
聚拢类型的两种选择思路:
一.比方您回到的聚集是只用于遍历,不可修改的,则赶回IEnumerable<T>
贰.比方回去的会见要求修改,如增添和删除成分,用ICollection<T>
叁.比方回到的集纳供给补助排序,索引等,用IList<T>
四.举例回去的会集要帮助索引,但不可能丰硕,删除成分,用ReadOnlyCollection<T>

例1:

ENCODE(str,
pass_str):该函数使用pass_str作为密码来加密字符串str,其加密的结果能够通过DECODE()函数来解密。该函数重返的结果是八个同str等长。
DECODE(crypt_str,
pass_str):该函数使用pass_str作为密码来解密使用ENCODE()加密后的字符串crypt_str。

2019.02.22
1、泛型:Func<T, bool>,Expression<Func<T,
bool>>用法
Func<T,
bool>:.net系统自定义了三种委托,有再次来到值的Func,无重回值的Action。而Func的终极三个参数总是委托的归来类型。
Expression<Func<T,
bool>>:是一种表明式,EF中where要求的项目
例如:

相关文章