php 实现CRC64 加密

/**
     * @return array
     */
    function crc64Table(){
        $crc64tab = array();
        // ECMA polynomial
        $poly64rev = (0xC96C5795 << 32) | 0xD7870F42;
        // ISO polynomial
        // $poly64rev = (0xD8 << 56);
        for ($i = 0; $i < 256; $i++)
        {
            for ($part = $i, $bit = 0; $bit < 8; $bit++) {
                if ($part & 1) {
                    $part = (($part >> 1) & ~(0x8 << 60)) ^ $poly64rev;
                } else {
                    $part = ($part >> 1) & ~(0x8 << 60);
                }
            }
            $crc64tab[$i] = $part;
        }
        return $crc64tab;
    }

    /**
     * get crc64 function
     * @param string $string
     * @param string $format
     * @return mixed
     *
     * Formats:
     *  crc64('php'); // afe4e823e7cef190
     *  crc64('php', '0x%x'); // 0xafe4e823e7cef190
     *  crc64('php', '0x%X'); // 0xAFE4E823E7CEF190
     *  crc64('php', '%d'); // -5772233581471534704 signed int
     *  crc64('php', '%u'); // 12674510492238016912 unsigned int
     */
    function crc64($string, $format = '%x'){
        static $crc64tab;
        if ($crc64tab === null) {
            $crc64tab = crc64Table();
        }

        $crc = 0;
        for ($i = 0; $i < strlen($string); $i++) {
            $crc = ~$crc;
            $crc = $crc64tab[($crc ^ ord($string[$i])) & 0xff] ^ (($crc >> 8) & ~(0xff << 56));
            $crc = ~$crc;
        }
        return sprintf($format, $crc);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值