美文网首页ios 开发,swift专场
swift 字符串hash 算法

swift 字符串hash 算法

作者: 爱编程的小兵 | 来源:发表于2017-10-27 10:46 被阅读0次

公司项目需求需要把三个整型映射到一个整型中以达到减小数据传输量。传输后的数据不需要反编译出来,事实上也反编译不出来,想到了用hash算法来实现。

一: Hash原理以及限制

  1. Hash的主要原理就是把大范围映射到小范围;所以,你输入的实际值的个数必须和小范围相当或者比它更小。不然冲突就会非常多。
  2. 因为Hash逼近单向函数;所以,你能够用它来对数据进行加密。
  3. 不同的应用对Hash函数有着不同的要求;比方,用于加密的Hash函数主要考虑它和单项函数的差距,而用于查找的Hash函数主要考虑它映射到小范围的冲突率。

二: 常见的Hash算法已经swfit的实现

  1. 加法Hash

  2. 位运算Hash

extension String {
    func stringHash() -> Int {
        var hash:Int64 = 0;
        var x:Int64 = 0;
        for i in 0 ..< self.characters.count {
            hash = (hash << 4 ) + Int64((self as NSString).character(at:i));
            let x = hash & Int64.init(0xF0000000)
            if x != 0 {
                hash ^= (x >> 24);
                hash &= ~x;
            }
        }
        hash = (hash & Int64.init(0x7FFFFFFF))
        hash = hash % 2147483647
        return Int(hash);
    }
}
  1. 乘法Hash
  2. 除法Hash
  3. 查表Hash
  4. 混合Hash

这里选用了位移hash达到了预期的效果,后续其他方法的hash有时间会一起补上。

相关文章

  • swift 字符串hash 算法

    公司项目需求需要把三个整型映射到一个整型中以达到减小数据传输量。传输后的数据不需要反编译出来,事实上也反编译不出来...

  • 算法入门:Hash

    什么是Hash算法:##### 简单的说,hash算法就是将字符串转化为数字的算法。 用一个例子说Hash的优势#...

  • iOS开发集锦之 2017.03.28(Swift 算法实战之路

    1. Swift 算法实战之路:数组,字符串,集合,与字典 作者: 故胤道长描述:Swift中数组、字符串、集合以...

  • Rabin-Karp算法在go的实现

    原文链接 github 简介 Rabin-Karp字符串快速查找算法和FNV hash算法是golang中stri...

  • 分布式集群架构场景化解决方案

    一致性hash算法hash算法应用场景普通hash算法存在的问题一致性hash算法手写一致性hash算法nginx...

  • 哈希算法

    哈希算法 什么是hash函数?常见的hash算法hashlib的用法hash算法的用途 什么是hash函数? 哈希...

  • IOS 逆向开发(二)密码学 HASH

    1. HASH算法简介 1.1 HASH是什么? Hash算法(也叫散列算法) Hash,一般翻译做“散列”,也有...

  • iOS面试之算法大全

    算法 算法内容如下: 字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中...

  • iOS面试之算法模块

    算法 算法内容如下: 字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中...

  • 负载均衡中的一致性hash算法

    hash简介 说到底,他是一种hash算法,那什么是hash算法?hash算法是一种散列算法,常用的比如MD5。抽...

网友评论

    本文标题:swift 字符串hash 算法

    本文链接:https://www.haomeiwen.com/subject/dsrrpxtx.html