`

DJBX33A哈希函数实现——Bash

阅读更多

 

DJBX33A 哈希函数又叫做time33 哈希函数,PHP、Perl、Apache中都是用该方法做为其哈希函数的实现。

 

本文就对该哈希函数做一简单的介绍,并用Bash对其进行实现。

 

该方法十分简单,将字符串中的每个字符的ascii码迭代*33加在一起即可。即hash(i)=hash(i-1)*33+ascii(i)。

 

假如字符串为:abc,则结果就是hashCode=(ascii(a)*33+ascii(b))*33+ascii(c)

 

PHP中的实现见博客:PHP中的hash函数实现

 

本文使用Bash实现该hash函数,代码如下:

 

#!/home/admin/bin/bash_bin/bash_4

declare -A HashAsciiTable;

for c in {a..z} {A..Z}
do
    HashAsciiTable[$c]=`printf "%d" "'$c"`;
done

function hash {
    inputStr=$1
    strLength=${#inputStr};
    hashValue=5381;
    for((i=0;i<strLength;i++))
    do
        char=${inputStr:$i:1};
        code=0;
        if [ -n ${HashAsciiTable[$char]} ]; then
            code=${HashAsciiTable[$char]};
        fi
        hashValue=$((code+hashValue*33));
    done
    eval $2=$hashValue;
}

## call the hash function
hash "abcdefasdff2123as" hashCode;

## echo the hash code for input string
echo $hashCode

 

结果为:1294730825853141650

 

分享到:
评论

相关推荐

    hashx4:SIMD 优化的通用哈希函数的集合

    算法djbx33a_32 ref - 这是 Daniel Bernstein 著名的 DJBX33A 哈希函数(h_i+1 = h_i * 33 + c_i+1, h_0 = 5381)。 包含它以显示基准中的基线。 该实现是一个简单的循环,您可能会在任何示例代码中找到。 djbx33a_...

    php-perl哈希算法实现(times33哈希算法)

    Times33哈希算法,也称为DJBX33A(Daniel J. Bernstein, Times 33 with Addition),是一种简单而高效的字符串哈希算法。该算法在PHP和Perl中被广泛使用,是Apache Portable Runtime (APR)库的默认哈希函数。本文将...

    php的hash算法介绍

    在PHP的源代码`zend_hash.h`中,DJBX33A的具体实现被优化为一个内联函数`zend_inline_hash_func`。这个函数首先设定初始哈希值为5381,然后针对不同长度的字符串,使用一个循环来处理每个字符。循环内部,哈希值通过...

    FM33A0编程手册等

    FM33A0xx_ds_chs、bootloaderFM33A0xx组合示例v2.0.zip 、FM33A0xx系列ARM固件函数库用户使用手册_V1.0.pdf、FM17520完整数据手册、FM17550、Keil.FM33A0XX_DFP.0.2.00beta.pack、Keil环境下复旦微FM33A0系列ARM芯片...

    iOS游戏应用源代码——remotevision-CurledViews-33a4528.zip

    《iOS游戏应用源代码解析——深入理解remotevision-CurledViews-33a4528》 在iOS开发领域,源代码分析是一项至关重要的技能,它能够帮助开发者深入理解应用的工作原理,优化代码,以及创新性地实现新功能。本篇文章...

    DCL-33A资料说明书

    根据提供的文件信息,我们可以提取并总结出关于DCL-33A指示控制器的相关知识点: ### DCL-33A 指示控制器介绍 #### 一、产品概述 DCL-33A是一款用于安装在导轨上的指示控制器,其设计符合一定的规格要求。该控制器...

    iSCT ACPI Virtual Device ACPI INT33A0 驱动程序 Windows 8 7

    2 双击您下载的驱动程序 驱动会解压缩到硬盘的以下位置:C: DRIVERS WIN INT33A0 3 打开设备管理器 4 展开&quot;其他设备&quot;选项 5 在&quot; 未知设备&quot;上点击升级驱动和软件 6 将驱动更新位置指向第2步解...

    Keil.FM33A0XX_DFP.0.3.02.pack.zip

    3. **Library**:库文件,可能包含复旦微电子提供的特定于FM33A0XX的函数库,如电机控制库、通信协议库等,这些库函数可以帮助开发者快速实现特定功能。 4. **Examples**:例程文件,是本压缩包的核心部分,提供了...

    FM33A0xxEV_V1.8.pdf

    ### FM33A0xxEV MCU产品概述: - **产品类型与用途**:FM33A0xxEV是一款具备512KB存储容量的Cortex-M0微控制器单元(MCU),特别适用于智能电表。 - **特点**:该MCU支持多种引脚和封装选项,提供了丰富的外设资源和...

    fm33a0xx_FreeRTOS_template_straightvps_C语言_freertos_fm33a0_fm33a

    提供的“fm33a0xx_FreeRTOS_template”文件很可能是移植FreeRTOS到FM33A0XX的一个基础模板,包含了上述步骤的基本实现。这个模板对于初学者来说是一个宝贵的参考资源,可以从中学习到移植过程的关键步骤和最佳实践。...

    IAR申请_fudan_FM33A0XXDEMO_

    【标签】"fudan FM33A0XXDEMO"表明这是一个与复旦微电子FM33A0系列相关的演示或示例代码,可能包含了一些基本功能的实现,帮助开发者了解如何在IAR环境下开始使用这些芯片。 在【压缩包子文件的文件名称列表】...

    基于复旦微FM33A0xx系列M0+平台移植FreeRTOS源码

    - **任务创建**:编写实现具体功能的任务函数,并调用`xTaskCreate()`创建任务。 - **中断处理**:FreeRTOS与中断协同工作,需要正确设置中断服务例程,并考虑中断上下文下的同步问题。 - **调试与优化**:使用...

    UJ33a直流电位差计

    **UJ33a直流电位差计**是一款高精度的便携式测量工具,主要用于实验室、车间和现场的直流电压测量。它具备0.05%的测量精度,不仅可直接测量电压,还能通过换算来测量直流电阻、电流、功率以及温度等参数。这款电位差...

    RFC-33A.rar_rfc-33a

    此程序为无线模块RFC-33A接收及发送程序,STM32的

    MN33A102_Danfoss_

    **MN33A102 Danfoss手册详解** Danfoss是一家全球知名的工程公司,以其在能源效率、制冷和空调技术方面的专业知识而闻名。MN33A102是Danfoss产品线中的一款重要组件,可能涉及到的是丹富斯的电磁阀、控制器或者热力...

    PCD—33A操作手册

    PCD—33A是专门设计用以实现温度控制的设备,其特点包括可编程功能,即用户可根据实际需要调整控制逻辑和参数设置。此类控制器广泛应用于工业、科研及实验室环境,用于监控和调整温度,确保过程的稳定性与精确性。...

    fm33a0xx_FreeRTOS_template源码.zip

    《基于FM33A0XX的FreeRTOS模板源码解析》 在嵌入式系统开发领域,实时操作系统(RTOS)的使用已经变得越来越普遍。FreeRTOS作为一款轻量级、开源的RTOS,因其高效、稳定的特点深受工程师们的喜爱。本文将深入探讨...

Global site tag (gtag.js) - Google Analytics