赞
踩
* 算法介绍:
* 代码实现:
哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。
一般用于快速查找和加密算法 。
用来产生一些数据片段(例如消息或会话项)的哈希值的算法。使用好的哈希算法,在输入数据中所做的更改就可以更改结果哈希值中的所有位;因此,哈希对于检测数据对象(例如消息)中的修改很有用。此外,好的哈希算法使得构造两个相互独立且具有相同哈希的输入不能通过计算方法实现。
典型的哈希算法包括 MD2、MD4、MD5 和 SHA-1。
我们在网上下载文件,在本地校验,以保证文件未被篡改:
import hashlib
with open("D:\python-3.11.1-amd64.exe", 'rb') as f:
m1 = hashlib.md5(f.read())
print('该文件校验值为:' + m1.hexdigest())
![在这里插入图片描述](https://img-
blog.csdnimg.cn/1435ff21e43f471bbe4b47b4c1009d4e.png#pic_center)
![在这里插入图片描述](https://img-
blog.csdnimg.cn/8e00b1ab96324ab5b763d15207eb2387.png#pic_center)
哈希算法不可逆,用于密文保存密码的签名,网站后台只保存签名值。 这样即使网站保存的信息被盗取,也无法获取用户的密码,具有更高的安全性。
![在这里插入图片描述](https://img-
blog.csdnimg.cn/b35eff300d8a451da7ba85552245a0fb.png#pic_center)
![在这里插入图片描述](https://img-
blog.csdnimg.cn/3577fc37813a4c64ae67b73f9f3e3fd6.jpeg#pic_center)
MD5:
import hashlib
h1 = hashlib.md5()
h1.update('helloworld'.encode('utf-8'))
print('md5:' + h1.hexdigest())
SHA224:
import hashlib
h2 = hashlib.sha224()
h2.update('helloworld'.encode('utf-8'))
print('sha224:' + h2.hexdigest())
SHA1:
import hashlib
h3 = hashlib.sha1()
h3.update('helloworld'.encode('utf-8'))
print('sha1:' + h3.hexdigest())
SHA256:
import hashlib
h4 = hashlib.sha256()
h4.update('helloworld'.encode('utf-8'))
print('sha256:' + h4.hexdigest())
SAH384:
import hashlib
h5 = hashlib.sha384()
h5.update('helloworld'.encode('utf-8'))
print('sha384:' + h5.hexdigest())
![在这里插入图片描述](https://img-
blog.csdnimg.cn/ad84bafeda184ee0a8b088707a2d8f1d.png#pic_center)
虽然哈希值是不可逆的,但我们可以通过哈希碰撞算出来密码是什么,这取决于算量,只要算量足够大,都能算出来。我们通常会将用户的密码进行 Hash
加密,如果不加盐,即使是两层的 md5 都有可能通过彩虹表的方式进行破译。彩虹表就是在网上搜集的各种字符组合的 Hash
加密结果。而加盐,就是人为的通过一组随机字符与用户原密码的组合形成一个新的字符,从而增加破译的难度。
import hashlib
# 密码加盐:
pwd = 'helloworld'
h1 = hashlib.md5()
h1.update('盐1'.encode('utf-8'))
h1.update(pwd.encode('utf-8'))
h1.update('盐2'.encode('utf-8'))
print('md5:' + h1.hexdigest())
# md5:ab46effd96a4873d6bfe9a465cedbb02
没有绝对安全的密码,我们仅可以通过这种方式去提高破解者的破解难度。只要算量足够大,密码破解只是时间问题
接下来我将给各位同学划分一张学习计划表!
那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:
接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。
综合薪资区间6k~15k
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?
综合薪资区间15k~30k
7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。
零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;
Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完
用Python编写漏洞的exp,然后写一个简单的网络爬虫
PHP基本语法学习并书写一个简单的博客系统
熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)
了解Bootstrap的布局或者CSS。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。