Bir dizeye hash bakıyorum ama tamsayı olmak için çıktıya ihtiyacım var, bu yüzden md5 yapamıyorum. Buradaki insanlar, beni aydınlatmak isteyebilecekleri herhangi bir favori sayısal karmaşaya sahipler. PHP kullanıyorum.Sayısal kareler
Teşekkürler!
Bir dizeye hash bakıyorum ama tamsayı olmak için çıktıya ihtiyacım var, bu yüzden md5 yapamıyorum. Buradaki insanlar, beni aydınlatmak isteyebilecekleri herhangi bir favori sayısal karmaşaya sahipler. PHP kullanıyorum.Sayısal kareler
Teşekkürler!
Belki bu sizin için yeterince iyi:
echo sprintf('%u', crc32($string));
DÜZENLEME: Diğer benzer alternatif, MD5 çıkış sadece hemen hemen her akla gelebilecek karma olduğu gibi, bir numara olduğunu
echo hash('adler32', $string);
. Bu, genellikle onaltılık olarak ifade edilen bir sayıdır. Size uygun olan herhangi bir karma algoritmayı kullanın, sondan istediğiniz kadar çok bit doğrayın ve bu bitleri bir sayı olarak ele alın. Herhangi bir iyi karma, son değeri (veya ilk veya orta) n bitleri, tüm değer olarak eşit olarak dağıtılmış olacak.
Evet, Ancak, karma sonucun kesilmesi veya katlanması, Hem güvenlik hem de dağıtım açısından gevşek kalite. – nik
Eğer hash iyi ise (eğer ideal bir hash için uygun bir yaklaşımsa), o zaman onu kestiğinizde eşit olarak iyi dağılmış olacak ve azaltılmış tuş boşluğuna ne olduğu dışında herhangi bir güvenliği kaybetmeyeceksiniz. – hobbs
Bence Stackoverflow üzerinde bazı iyi karma ve PHP'ye özgü sorular var.
Burada bir hashing
+php
search deneyin.
kısa bir liste
, Need a simple hash in PHPSen ondalık sayı içine ve tersi onaltılık değiştirmek için base_convert kullanabilirsiniz. Tamsayıları (bir dize olarak) hex'e dönüştürmek istiyorsanız, 32 bitlik sayılarla veya daha azıyla sınırlıyım (PHP_INT_MAX). Ben mevcut sağlamalarının Of
php -r 'foreach (hash_algos() as $hash) { echo $hash, "\n", $a = hash($hash, "test"), "\n", $b = base_convert($a, 16, 10), "\n", $c = base_convert($b, 10, 16), "\n", ($c === $a ? "yes" : "no"), "\n\n"; }' > hashes.txt
, bunlar ondalık ve onaltılık arasında dönüştürebilirsiniz olanları şunlardır:
adler32
c1015d04
3238092036
c1015d04
yes
crc32
accf8b33
2899282739
accf8b33
yes
crc32b
d87f7e0c
3632233996
d87f7e0c
yes
Eğer iyi güvenlik gibi ya da iyi anahtar dağıtımı gibi "iyi" bir karma kastediyorsunuz ? İlk irade genellikle size ikinci, ama nispeten yüksek bir maliyetle verir. – RBarryYoung
Aşağıdaki sayfada, genel amaçlı karma işlevlerin etkili ve çok az çarpışma sergilediği birkaç uygulaması vardır: http://partow.net/programming/hashfunctions/index.html –