Məzmuna keç

Modul:Hash

Sənədləşdirmə

Scribunto-nun heş funksiyası üçün modul.

{{#invoke:Hash|main|söz|heş alqoritmi}}

Boz rəng istəkdən asılı parametrləri göstərir.

Defolt heş alqoritmifnv164 (ətraflı).

2017-ci ilin noyabrına olan mövcud heş alqoritmlərinin siyahısı (bunlar PHP 5.4-ün hash() funksiyasında mövcud olan eyni alqoritmlərdir; onların siyahısı hash_algos() funksiyası ilə göstərilir)

md2; md4; md5; sha1; sha224; sha256; sha384; sha512/224; sha512/256; sha512; sha3-224; sha3-256; sha3-384; sha3-512; ripemd128; ripemd160; ripemd256; ripemd320; whirlpool; tiger128,3; tiger160,3; tiger192,3; tiger128,4; tiger160,4; tiger192,4; snefru; snefru256; gost; gost-crypto; adler32; crc32; crc32b; crc32c; fnv132; fnv1a32; fnv164; fnv1a64; joaat; murmur3a; murmur3c; murmur3f; xxh32; xxh64; xxh3; xxh128; haval128,3; haval160,3; haval192,3; haval224,3; haval256,3; haval128,4; haval160,4; haval192,4; haval224,4; haval256,4; haval128,5; haval160,5; haval192,5; haval224,5; haval256,5


Nümunələr

  • {{#invoke:Hash|main|Söz}} → 7bb0f57e0475f493
  • {{#invoke:Hash|main|Başqa bir söz}} → 177aa6b30df2c3e7
  • {{#invoke:Hash|main|Söz|crc32}} → efbb097e
  • {{#invoke:Hash|main|Söz|crc32b}} → 695ac655
  • {{#invoke:Hash|main|Söz|md5}} → 0786697ec9a183d9ff1f88f01282c0c7
  • {{#invoke:Hash|main|Söz|unknown_algorithm}}Həş alqoritmi unknown_algorithm dəstəklənmir və ya siz onun adını dəqiq müəyyənləşdirməmisiniz. mw.hash.listAlgorithms() funksiyasında mövcud alqoritmlərin siyahısına baxın.
  • {{#invoke:Hash|main}}Həş üçün sətir müəyyənləşdirilməyib.

Texniki detallar

fnv164 alqoritmi performans səbəblərinə görə defolt alqoritm seçilib. (bax: en:Fowler–Noll–Vo hash function), o, mümkün olan toqquşma ehtimalını cüzi dəyərə endirmək üçün 64 bitlik funksiyadan istifadə edir.

local getArgs = require('Module:Arguments').getArgs
local p = {}

local function inTable(table, value)
	for k, v in pairs(table) do
		if v == value then
			return true
		end
	end
	return false
end

function p.list(frame)
	return table.concat(mw.hash.listAlgorithms(), '; ')
end

function p.main(frame)
	local args = getArgs(frame, { frameOnly = true })
	local algorithm
	
	if not args[1] then
		return '<span class="error">Həş üçün sətir müəyyənləşdirilməyib.</span>'
	end
	if args[2] then
		if not inTable(mw.hash.listAlgorithms(), args[2]) then
			return '<span class="error">Həş alqoritmi ' .. args[2] .. ' dəstəklənmir və ya siz onun adını dəqiq müəyyənləşdirməmisiniz. <kbd>mw.hash.listAlgorithms()</kbd> funksiyasında mövcud alqoritmlərin siyahısına baxın.</span>'
		end
		algorithm = args[2]
	else
		algorithm = 'fnv164'
	end
	
	return mw.hash.hashValue(algorithm, args[1])
end

return p