我有一组ASCII字符串,假设它们是文件路径。它们既可以很短也可以很长。
我正在寻找一种可以计算此类字符串的哈希的算法,该哈希也将是字符串,但具有固定的长度,例如youtube video id:
https://www.youtube.com/watch?v=-F-3E8pyjFo
^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
MD5似乎是我所需要的,但是对我来说,拥有短的哈希字符串至关重要。
是否有可以执行此操作的shell命令或python库?
在该L的油墨,它说,截断MD5是均匀分布的。我想使用 PySpark 检查它,我首先在 Python 中创建了 1,000,000 个 UUID,如下所示。然后截断 MD5 的前三个字符。但是我得到的图与均匀分布的累积分布函数并不相似。我尝试使用 UUID1 和 UUID4,结果相似。符合截断 MD5 均匀分布的正确方法是什么?
import uuid
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.distributions.empirical_distribution import ECDF
import pandas as pd
import pyspark.sql.functions as f
%matplotlib inline
### Generate 1,000,000 UUID1
uuid1 = [str(uuid.uuid1()) for i in range(1000000)] # make a UUID based on the host ID and current time
uuid1_df = pd.DataFrame({'uuid1':uuid1})
uuid1_spark_df = spark.createDataFrame(uuid1_df)
uuid1_spark_df = uuid1_spark_df.withColumn('hash', f.md5(f.col('uuid1')))\
.withColumn('truncated_hash3', f.substring(f.col('hash'), 1, 3))
count_by_truncated_hash3_uuid1 = …Run Code Online (Sandbox Code Playgroud)