PHP的sha1问题

 bng7541071 发布于 2022-12-01 11:53

我想要这20个字符而不是这些二进制的东西有什么简单的办法吗?

说清楚一些:这个函数将输出长度为160bit(也就是20byte)的二进制,其中每8bit的二进制对应ASCII码的一个字符,所以这160bit的二进制对应20个字符,我想要的就是这20个字符。

2 个回答
  • 我如果没有理解错,它返回的"二进制"正是你要的东西,你可能掉进了自己想法的陷阱。

    这是一段依次输出20个字符的ASCII值的简单程序,简单观察一下就知道很多在非可打印字符(值小于32)和扩展区域(值大于127),在扩展区域的位置对于UTF8和GB系列的编码来说都是利用起来表示多位字节的编码的,所以在这些环境下这个编码区域的单个字节是毫无意义的,也就是会出现乱码了

    $x = sha1("Shanghai", true);
    for ($i = 0; $i < strlen($x); $i++) {
        echo $x[$i] . "\t" . ord($x[$i]) . "\n";
    }

    另请参见ASCII表: http://www.ascii-code.com/

    2022-12-01 14:42 回答
  • 楼下请忽略此答案

    不知道这个是不是你要的结果:

    <?php
    $str = 'Shanghai';
    
    echo sha1($str);

    参考: http://php.net/manual/en/function.sha1.php

    2022-12-01 14:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有