Closed yl12053 closed 2 years ago
根据Wiki中所说,Mojang所使用的hash方法共有61个hex字符 经过测试(拿我自己的账号去fetch) GET https://sessionserver.mojang.com/session/minecraft/profile/e1be62e097e74c02a39446b71d951df0 将其中的texture资料base64解码后得到
{ "timestamp" : 1650367901308, "profileId" : "e1be62e097e74c02a39446b71d951df0", "profileName" : "yjgsvj", "textures" : { "SKIN" : { "url" : "http://textures.minecraft.net/texture/3b60a1f6d562f52aaebbf1434f1de147933a3affe0e764fa49ea057536623cd3", "metadata" : { "model" : "slim" } } } }
(我没上皮肤,用的alex) 其中hash值为3b60a1f6d562f52aaebbf1434f1de147933a3affe0e764fa49ea057536623cd3, 共64个hex字符(即32byte)
>>> import hashlib, requests >>> hashlib.sha256(requests.get("http://textures.minecraft.net/texture/3b60a1f6d562f52aaebbf1434f1de147933a3affe0e764fa49ea057536623cd3").content).hexdigest() '3b60a1f6d562f52aaebbf1434f1de147933a3affe0e764fa49ea057536623cd3'
, 同mojang给的hash值相等 为了避免是没装皮肤的原因, 随机找了一个路人账号 GET https://sessionserver.mojang.com/session/minecraft/profile/f57d69a08f404c379fd58dca9ad5fc54 之后base64 decode
{ "timestamp" : 1650368517916, "profileId" : "f57d69a08f404c379fd58dca9ad5fc54", "profileName" : "anapa", "textures" : { "SKIN" : { "url" : "http://textures.minecraft.net/texture/8434f037b6a73d190a3b5ec170f379cc78e6460922d4611d744a8a82b96c74a8" } } }
一样,8434f037b6a73d190a3b5ec170f379cc78e6460922d4611d744a8a82b96c74a8是64个hex字符
>>> hashlib.sha256(requests.get("http://textures.minecraft.net/texture/8434f037b6a73d190a3b5ec170f379cc78e6460922d4611d744a8a82b96c74a8").content).hexdigest() '8434f037b6a73d190a3b5ec170f379cc78e6460922d4611d744a8a82b96c74a8'
所以其实mojang的hashing algorithm就是SHA256(image_bin) 这样想的话, 现在的hashing algorithm还是有可能撞mojang的
感谢反馈。
我测试了下,Mojang 官方的计算方法现在确实变成了直接算图像的 SHA-256。碰撞可以被认为是不可能发生的,到目前还没有发现过 SHA-256 算法的碰撞。
我已经更新了规范,现在不再规定材质 hash 的计算方法,改由服务器自行决定,建议至少采用 SHA-256。
根据Wiki中所说,Mojang所使用的hash方法共有61个hex字符 经过测试(拿我自己的账号去fetch) GET https://sessionserver.mojang.com/session/minecraft/profile/e1be62e097e74c02a39446b71d951df0 将其中的texture资料base64解码后得到
(我没上皮肤,用的alex) 其中hash值为3b60a1f6d562f52aaebbf1434f1de147933a3affe0e764fa49ea057536623cd3, 共64个hex字符(即32byte)
, 同mojang给的hash值相等 为了避免是没装皮肤的原因, 随机找了一个路人账号 GET https://sessionserver.mojang.com/session/minecraft/profile/f57d69a08f404c379fd58dca9ad5fc54 之后base64 decode
一样,8434f037b6a73d190a3b5ec170f379cc78e6460922d4611d744a8a82b96c74a8是64个hex字符
所以其实mojang的hashing algorithm就是SHA256(image_bin) 这样想的话, 现在的hashing algorithm还是有可能撞mojang的