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 有碰撞问题,不适合做顶级安全用途,但配合指纹做二次认证,日常用用还是够的。
如果你想更强一点,可以考虑上AES或RSA,配合指纹和钥匙串存储,搞个安全闭环,也不复杂。
3.75KB
文件大小:
评论区