• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Aesaes
 

Aesaes

on

  • 734 views

OpenSource hash function - Boyan Krosnov

OpenSource hash function - Boyan Krosnov

Statistics

Views

Total Views
734
Views on SlideShare
734
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NoDerivs LicenseCC Attribution-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Aesaes Aesaes Presentation Transcript

    • aesaesхеш функция с общо предназначение
    • хеш функция
    • хеш функция с общо предназначение (non-cryptographic, general purpose)
    • Hash tables, Caches, Bloom filters,Finding duplicate records
    • MurmurHash3 популярна такава бърза, добро разпределениеhttps://code.google.com/p/smhasher/
    • aesaes наше откритиепо-бърза, също толкова добраhttp://packetscale.com/aesaes
    • Скорост
    • Разпределениенеразличимо от случайно1M 128-битови стойностив 2М кофи~224000 кофи с колизиимаксимална дълбочина = 7
    • Псевдокодstate = 0for b in blocks tmp = b tmp = tmp.SubBytes.ShiftRows.MixColumns tmp = tmp.SubBytes.ShiftRows.MixColumns state = state XOR tmpreturn state[0](прилича на 2 рунда от AES-128; ползва същите примитиви)
    • IA32 разширение - AES-NI 2008(почти) всички нови процесори от Intel и AMD
    • Лиценз2-clause BSD
    • Зов за помощсайт и инструменти за разработчицидруги варианти на функцията“avalanche” и “bit bias” тестове aesaes@packetscale.com
    • Благодаря!
    • (c) 2011, Packetscaleuint32_taesaes_string(void *_data, int size){ __m128i *v = (__m128i*)_data; union __ZZ tmp, state, key; state.v = key.v = _mm_setzero_si128(); while (size > 0) { tmp.v = *v; v++; size -= sizeof( *v ); tmp.v = _mm_aesenc_si128( tmp.v, key.v ); tmp.v = _mm_aesenc_si128( tmp.v, key.v ); state.v ^= tmp.v; } return state.vals[0];}