承接 synchro/wordhash 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

synchro/wordhash

Composer 安装命令:

composer require synchro/wordhash

包简介

Generate hashes in a human-readable format

README 文档

README

By Marcus Bointon (@Synchro).

Test Status Type Coverage Total Downloads Latest Version License

Hashes are functions which map arbitrary-sized data into a fixed-size value. They are effectively very large numbers that are usually presented as hexadecimal (e.g. 5d41402abc4b2a76b9719d911017c592) or base-64 strings (e.g. XUFAKrxLKna5cZ2REBfFkg).

While it's easy for a computer to spot differences between such random-looking strings, it's much harder for us humans. For example, it's difficult for you to tell whether Mk3PAn3UowqTLEQfNlol6GsXPe+kuOWJSCU0cbgbcs8 and Mk3PAn3UowqTLEQfNlo16GsXPe+kuOWJSCU0cbgbcs8 are the same simply by looking at them (they're not!). Sometimes you want a human-readable hash function that makes differences more obvious, and that's what this library provides.

This library uses a truncated SHA-512/256 hash, and maps it into words drawn from a dictionary of 4096 common English words (a random subset of this dictionary). The string hello produces a hash of three-straps-solved-clutch-groove-abode, and that's fairly easy for humans to tell apart from three-straps-solved-lagoon-groove-abode.

Like all good hash functions, it produces wildly different output when presented with only very small differences in the input; hellp produces zlotys-south-remark-lier-rewind-accept.

You can choose how many words it generates (up to 21, equivalent to a 252-bit hash), and what separators appear between the words. It's also possible to substitute your own dictionary.

Security warning!

This is not intended for high-performance or cryptographic purposes; do not hash your passwords with this function!

Usage

All methods are static, so there's no need to create an instance.

The generate() method takes three parameters:

  • The string to hash (required)
  • The number of words to use (optional, between 1 and 21, defaults to 5, the equivalent of a 45-bit hash)
  • The separator to use between words (optional, defaults to -)
use Synchro\WordHash\WordHash;
echo WordHash::generate('hello!', 5, '_');

Example output

boil_rife_crepe_trait_carted

If you don't like the default words, or want to use emoji, HTML snippets, a different language, or something else, you can provide your own dictionary. It must contain exactly 4096 unique return-delimited words (see the provided dictionary.txt for reference). The words don't need to be in any particular order, though the provided one is sorted alphabetically.

WordHash::loadDictionary('/path/to/my/dictionary.txt');

Developer info

Requires PHP 7.4+

🧹 Lint the code using PHP Codesniffer:

composer lint

⚗️ Run static analysis using PHPStan or Psalm:

composer test:types
composer test:psalm

✅ Run unit tests using Pest

composer test:unit

🚀 Run the entire test suite:

composer test

Project layout based on Skeleton PHP by Nuno Maduro under the MIT license.

synchro/wordhash 适用场景与选型建议

synchro/wordhash 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 643 次下载、GitHub Stars 达 11, 最近一次更新时间为 2020 年 10 月 04 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「package」 「php」 「hash」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 synchro/wordhash 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 synchro/wordhash 我们能提供哪些服务?
定制开发 / 二次开发

基于 synchro/wordhash 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 643
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 11
  • 点击次数: 7
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 11
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-10-04