hash.c 986 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "brl.mod/blitz.mod/blitz.h"
  2. #ifndef XXHASH_H_5627135585666179
  3. #define XXH_STATIC_LINKING_ONLY
  4. #define XXH_IMPLEMENTATION
  5. #include "xxhash.h"
  6. #endif
  7. BBString * bmx_gen_hash(BBString * txt) {
  8. char buf[64];
  9. snprintf(buf, 64, "0x%llx", XXH3_64bits(txt->buf, txt->length * sizeof(BBChar)));
  10. return bbStringFromCString(buf);
  11. }
  12. BBString * bmx_gen_hash32(BBString * txt) {
  13. char buf[64];
  14. XXH64_hash_t hash = XXH3_64bits(txt->buf, txt->length * sizeof(BBChar));
  15. snprintf(buf, 64, "0x%x", (uint32_t)(hash ^ (hash >> 32)));
  16. return bbStringFromCString(buf);
  17. }
  18. XXH3_state_t * bmx_hash_createState() {
  19. return XXH3_createState();
  20. }
  21. void bmx_hash_reset(XXH3_state_t * state) {
  22. XXH3_64bits_reset(state);
  23. }
  24. void bmx_hash_update(XXH3_state_t * state, void * data, int length) {
  25. XXH3_64bits_update(state, data, length);
  26. }
  27. BBString * bmx_hash_digest(XXH3_state_t * state) {
  28. char buf[64];
  29. snprintf(buf, 64, "%llx", XXH3_64bits_digest(state));
  30. return bbStringFromCString(buf);
  31. }