首页 > 解决方案 > 加密一个字符串,这样即使管理员也无法弄清楚

问题描述

我正在尝试制作一个保持用户部分匿名的 Discord 供词机器人。我计划通过使嵌入颜色对用户保持不变来实现这一点,这样人们就“知道”它是谁。

代码是开源的,所有服务器成员的用户名都是公开可见的,因此名称与环境变量混合,以确保没有人可以从他们的颜色追踪用户。但是,由于我知道变量的值,我仍然可以从技术上确定哪种颜色属于特定用户。

所以我希望有一些类似伪随机的东西,但是在重新启动程序时,必须生成相同的“随机”数字,但没有人应该能够弄清楚它是什么。

回到我原来的问题。是否可以对算法进行某种程度的随机化,这样即使我也无法回溯它以找到与用户关联的颜色?

我觉得这是不可能的,因为我想要一个具有已知可能输入(小列表)的确定性算法,并且我知道算法本身。就像拥有密码列表和使用的散列算法一样。

下面的代码:

import discord
import os
from hashlib import sha256

def embed_text(parsed, user):
  encrypted = sha256((str(user) + os.environ['ENCRYPTION_KEY']).encode()).hexdigest()
  color = int(encrypted[int(encrypted[0],16):int(encrypted[0],16)+6],16)
  return discord.Embed(description=parsed, color=color)

标签: pythonencryptionrandomhashdiscord

解决方案


推荐阅读