Hashids 0.3.2

Hashids 0.3.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Jofell Gallardo 维护。



Hashids 0.3.2

  • Jopes Gallardo

hashids-objc

Objective C 的 Hashids 实现

网站: http://www.hashids.org

从无符号整数生成短哈希(如 YouTube 和 Bitly)。

  • 混淆数据库 ID
  • 作为忘记密码的散列使用
  • 邀请代码
  • 存储分片编号

Hashids 专为 URL 缩短、跟踪东西、验证账户或使页面私有而设计。与其显示为 123,您可以显示为 b9iLXiAaEATedTByAaco9cy5。哈希取决于您的盐值。

用法

安装

通过 Cocoapods

将名为 Hashids 的 Cocoapod 添加到 Podfile

pod "Hashids"

保存 Podfile 后,运行以下命令

pod install

通过下载

您可以通过从 http://www.github.com/jofell/Hashids 存储库下载文件来为 Objective-C 安装 Hashids。您可以执行以下任一操作

在从存储库中获取文件后,转到文件夹 Hashids/Pod/Classes 并将所有类文件添加到您的 XCode 项目中。

基本用法

一旦将类文件添加到您的 XCode 项目中,只需将 Hashids 导入到 Objective-C 源代码中。

    #import <Hashids/Hashids.h>

然后创建一个 Hashids 类的实例。

    Hashids *hashid = [Hashids new];

要加密单个整数

    NSString *hash = [hashids encrypt:@123, nil]; // @"AjL"

请注意,与其他 hashids 实现(例如)不同,您应使用 NSNumber 实例作为加密参数。另外请注意,参数是 nil 结束的,这意味着 encrypt: 调用可以接受任意数量的参数,如下所示

    NSString *hash = [hashids encrypt:@123, @456, @789, nil]; // @"qa9t96h7G"

要解密 NSString 哈希

    NSArray *ints = [hashids decrypt:@"qa9t96h7G"]; // @[ @123, @456, @789 ]

请注意,这个调用只返回一个 NSArray 实例。这是为了使此方法的返回值更一致。

自定义哈希值

Hashids 支持通过接受一个盐值、最小哈希长度和自定义字母表来个性化您的哈希值。以下是自定义哈希值的方法

    Hashids *hasher = [[Hashids alloc] initWithSalt:@"this is my salt"
                                          minLength:8
                                           andAlpha:myAlpha];

通常,您可以通过提供上述三个参数中的任何一个来自定义散列。盐值和字母表默认为 nil,而散列长度默认最小为0,即在通过 newinit 分配 Hashids 实例时。以下示例仅使用这三个参数来自定义。

使用自定义盐值

    Hashids *hasher = [Hashids hashidWithSalt:@"this is my salt 1"];
    [hasher encrypt:@123, nil]; // @"rnR"

当盐值变化时,生成的散列也会变化。

    Hashids *hasher = [Hashids hashidWithSalt:@"this is my salt 2"];
    [hasher encrypt:@123, nil]; // @"XBn"

长度在6到32个字符之间的盐值可以提供良好的随机性。

控制散列长度

默认情况下,散列将是最短的。您可能希望增加散列长度的一个原因是要掩盖散列背后整数的真实大小。

这可以通过将最小散列长度传递给 init 调用来实现。散列将通过添加额外字符来填充,使其看似更长。

    Hashids *hasher = [Hashids hashidWithSalt:@"this is my salt" 
                                 andMinLength:16];
    [hasher encrypt:@1, nil]; // @"AA6Fb9iLXiAaBFB5"

使用自定义字母表

可以为散列设置自定义字母表。默认字母表为 @"xcS4F6h89aUbideAI7tkynuopqrXCgTE5GBKHLMjfRsz"

要使散列中仅包含小写字母,请传递以下自定义字母表:

    Hashids *hasher = [Hashids hashidWithSalt:@"this is my salt" 
                                    minLength:16
                                     andAlpha:@"abcdefghijklmnopqrstuvwxyz"];
    [hasher encrypt:@123456789, nil]; // @"zdrnoaor"

$#!7 事物

此代码的目的是将生成的散列放置在可见位置——例如URL中。

因此,算法尝试避免生成最常用的英语 curse words,方法是绝不会把以下字母放在一起:c, C, s, S, f, F, h, H, u, U, i, I, t, T

冲突

没有冲突。您生成的散列应该是唯一的。

可解密散列 ¿qué?

真正的加密散列无法解密。然而,为了使事情简单,我们广泛的用“hash”一词来指代生成的随机字符集,就像YouTube hash一样。