最近在公司在用Swift 翻 oc 的項(xiàng)目,由于原來(lái)的加密方式都是用OC寫(xiě)的,現(xiàn)在要Swift
發(fā)篇文章,大家以后進(jìn)行加密的時(shí)候,希望可以方便一些,不用再這么費(fèi)勁
1.導(dǎo)入第三方庫(kù)CryptoSwift
import CryptoSwift
CryptoSwift源碼地址
算了,話不多說(shuō),直接上代碼
public static func Endcode_AES_ECB(strToEncode:String)->String {
// 從String 轉(zhuǎn)成data
let data = strToEncode.data(using: String.Encoding.utf8)
// byte 數(shù)組
var encrypted: [UInt8] = []
do {
encrypted = try AES(key: key, iv: iv, blockMode: .CBC, padding: PKCS7()).encrypt(data!.bytes)
} catch {
}
let encoded = Data(encrypted)
//加密結(jié)果要用Base64轉(zhuǎn)碼
return encoded.base64EncodedString()
}
// MARK: AES-ECB128解密
public static func Decode_AES_ECB(strToDecode:String)->String {
//decode base64
let data = NSData(base64Encoded: strToDecode, options: NSData.Base64DecodingOptions.init(rawValue: 0))
// byte 數(shù)組
var encrypted: [UInt8] = []
let count = data?.length
// 把data 轉(zhuǎn)成byte數(shù)組
for i in 0..<count! {
var temp:UInt8 = 0
data?.getBytes(&temp, range: NSRange(location: i,length:1 ))
encrypted.append(temp)
}
// decode AES
var decrypted: [UInt8] = []
do {
decrypted = try AES(key: key, iv: iv, blockMode:.CBC, padding: PKCS7()).decrypt(encrypted)
} catch {
}
// byte 轉(zhuǎn)換成NSData
let encoded = Data(decrypted)
var str = ""
//解密結(jié)果從data轉(zhuǎn)成string
str = String(bytes: encoded.bytes, encoding: .utf8)!
return str
}
DEMO地址
后續(xù)還會(huì)更新其他加密方式 ,以及原生加密等等,大家如果寫(xiě)了其他的加密,可以@我一下,一起學(xué)習(xí)