hash爆破&&base换表

hash爆破&&base换表

1.hash函数
hash函数是一类函数的统称,这类函数的输入是任意的二进制数据,输出是固定长度的二进制数据,这类函数具有如下特点:

单向性:由输入计算得到输出是简单迅速的,而由输出反推出输入在数学上讲是不可行的
碰撞约束:寻找到两个不同的输入,具有相同的输出是极为困难的
满足这些特点的函数均可称为hash函数。将某数据作为hash函数的输入,计算得到输出,习惯上将这一输出称为该数     据的hash值。

hash函数的一大作用便是安全地存储密码,不直接保存密码(也就是不存储明文的密码),而是保存密码的hash值,验证时只需再次计算输入的密码的hash值,与保存的密码的hash值相比较便可得知密码是否正确。由于hash函数的单向性与碰撞约束的特点,攻击者即使拿到了密码的hash值,也难以知道密码本身。

虽然由密码的hash值直接计算密码本身从数学上讲就是不可行的,但我们知道hash函数由输入计算得到输出是简单迅速的,通过不断尝试获得hash值对应的输入的操作就被称做爆破。

还有hashcat的使用,详细请看这篇文章:
 https://blog.werner.wiki/use-hashcat-crack-all-kinds-of-hash/

2. sha1爆破-buu-CrackRTF

一共有两次解密,之前做的时候由于不会爆破直接动调把第一次跳过去了,这次只记录第一次解密过程
在这里插入图片描述

import hashlib
flag = "@DBApp"

for i in range(100000,999999):
    c = str(i) + flag
    s = hashlib.sha1(c.encode())
    x = s.hexdigest()  #换成十六进制数(小写)
    if "6e32d0943418c2c33385bc35a1470250dd8923a9" in x:
        print(c)

2. mrctf-re签到-base换表

import base64
import string

str1 = "tvjdvez7D0vSyZbnzv90mf9nuKnurL8YBZiXiseHFq=="

string1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

print (base64.b64decode(str1.translate(str.maketrans(string1,string2))))

# maketrans() 函数用于创建字符映射的转换表
# translate() 用于转换两个表
# base64.b64decode  base64解密


在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值