iOS MD5指纹哈希加密方案

iOS 的 MD5 指纹加密组合,蛮适合做一些轻量级的本地安全。像用户密码、缓存校验之类的,先来一发MD5哈希,再结合指纹验证,多一层保护,感觉还挺靠谱的。

MD5 说白了,就是把输入的内容变成一串固定长度的哈希值,格式一般是 32 位的十六进制字符串。Objective-C 用CommonCrypto挺顺手,Swift 可以搭配CryptoSwift,用起来也还不错。

像下面这样一段 Objective-C 代码,直接把字符串加密成 MD5:

#import 
- (NSString *)MD5:(NSString *)input {
  const char *cstr = [input UTF8String];
  unsigned char result[CC_MD5_DIGEST_LENGTH];
  CC_MD5(cstr, (CC_LONG)strlen(cstr), result);
  return [NSString stringWithFormat:@"xxxxxxxxxxxxxxxx",
  result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7],
  result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15]];
}

Swift 这边稍微折腾点,但配合 CryptoSwift 一样能搞定:

import CryptoSwift
func md5(_ input: String) -> String {
  let data = Data(input.utf8)
  return data.md5().map { String(format: "hhx", $0) }.joined()
}

说到指纹加密,其实就是 Touch ID 或 Face ID 的身份验证,iOS 的 LocalAuthentication 框架就能搞定:

import LocalAuthentication
func authenticateUser() {
  let context = LAContext()
  var error: NSError?
  if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
    context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "验证您的身份") { success, _ in
      DispatchQueue.main.async {
        if success {
          print("身份验证成功")
        } else {
          print("身份验证失败")
        }
      }
    }
  } else {
    print("无法使用 Touch ID/Face ID")
  }
}

实战场景里可以这么玩:输入密码先做 MD5 加密,存本地或者缓存里,等用户用指纹解锁再给权限访问。嗯,虽然MD5 有碰撞问题,不适合做顶级安全用途,但配合指纹做二次认证,日常用用还是够的。

如果你想更强一点,可以考虑上AESRSA,配合指纹和钥匙串存储,搞个安全闭环,也不复杂。

zip 文件大小:3.75KB