Fixed dumb human's attempt at hashing
This commit is contained in:
parent
f861c758d8
commit
36124269dd
1 changed files with 11 additions and 8 deletions
|
@ -17,11 +17,14 @@ def hash_obj(hash, data, text: bool = True) -> str:
|
||||||
Data can be text or binary
|
Data can be text or binary
|
||||||
"""
|
"""
|
||||||
if text:
|
if text:
|
||||||
hash.update(data)
|
hash.update(data.encode("UTF-8"))
|
||||||
return hash.hexdigest()
|
return hash.hexdigest()
|
||||||
BSIZE = 65536
|
BSIZE = 65536
|
||||||
while block := data.read(BSIZE):
|
block_idx = 0
|
||||||
hash.update(block)
|
while block_idx * BSIZE < len(data):
|
||||||
|
block = data[BSIZE * block_idx:BSIZE * (block_idx + 1)]
|
||||||
|
hash.update(block)
|
||||||
|
block_idx += 1
|
||||||
return hash.hexdigest()
|
return hash.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,14 +33,14 @@ class DevCog(commands.Cog):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
|
|
||||||
@commands.command(name="hash")
|
@commands.command(name="hash")
|
||||||
async def _hash(self, ctx, method: str, *, data: str):
|
async def _hash(self, ctx, method: str, *, data: str = None):
|
||||||
if method not in supported_hashes:
|
if method not in supported_hashes:
|
||||||
algo_txt = ", ".join(f"`{x}`" for x in supported_hashes)
|
algo_txt = ", ".join(f"`{x}`" for x in supported_hashes)
|
||||||
await ctx.send(
|
await ctx.send(
|
||||||
"Unsupported hash algorithm. Supported:\n" + algo_txt
|
"Unsupported hash algorithm. Supported:\n" + algo_txt
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
if len(data) == 0 and len(ctx.message.attachments) == 0:
|
if not data and len(ctx.message.attachments) == 0:
|
||||||
await ctx.send(
|
await ctx.send(
|
||||||
"No data to hash. Either attach a file or send text to hash"
|
"No data to hash. Either attach a file or send text to hash"
|
||||||
)
|
)
|
||||||
|
@ -46,16 +49,16 @@ class DevCog(commands.Cog):
|
||||||
if len(ctx.message.attachments) > 0:
|
if len(ctx.message.attachments) > 0:
|
||||||
text = False
|
text = False
|
||||||
data = await ctx.message.attachments[0].read()
|
data = await ctx.message.attachments[0].read()
|
||||||
|
|
||||||
# Default to sha256, just in case
|
# Default to sha256, just in case
|
||||||
hash = getattr(hashlib, method, hashlib.sha256)()
|
hash = getattr(hashlib, method, hashlib.sha256)()
|
||||||
hash = hash_obj(hash, data, text)
|
hex = hash_obj(hash, data, text)
|
||||||
|
|
||||||
data_size = convert_bytesize(len(data))
|
data_size = convert_bytesize(len(data))
|
||||||
title = data if text else ctx.message.attachments[0].filename
|
title = data if text else ctx.message.attachments[0].filename
|
||||||
description = "Hashed using " + method
|
description = "Hashed using " + method
|
||||||
fields = [
|
fields = [
|
||||||
Field("Data Size", data_size, False),
|
Field("Data Size", data_size, False),
|
||||||
Field("Hash", hash, False),
|
Field("Hash", hex, False),
|
||||||
]
|
]
|
||||||
|
|
||||||
embed = build_embed(
|
embed = build_embed(
|
||||||
|
|
Loading…
Add table
Reference in a new issue