问题描述
我使用 EasyCrypt 库来获取加密密钥:
let crypto = EasyCrypt(secret: "MySecretKey",algorithm: .sha1)
let result = crypto.hash("20201228165764")
let resultPasscode = crypto.hash("769762")
Output :
result: "9ZZeB5Kduxx6gYnmTyjoqpz1YC0="
resultPasscode: "37HLrDaNoskp8NR85JaVG0aufDU="
RNEncryptor : HMAC algorithm
let data: Data = Data("20201228165764".utf8)
let password = "MySecretKey"
let ciphertext = RNCryptor.encrypt(data: data,withPassword: password)
下面是AES加密代码:
func AESEncryption(key: String) -> String? {
let keyData: NSData! = (key as Nsstring).data(using: String.Encoding.utf8.rawValue) as NSData!
let data: NSData! = (self as Nsstring).data(using: String.Encoding.utf8.rawValue) as NSData!
let cryptData = NSMutableData(length: Int(data.length) + kCCBlockSizeAES128)!
let keyLength = size_t(kCCKeySizeAES128)
let operation: Ccoperation = UInt32(kCCEncrypt)
let algoritm: CCAlgorithm = UInt32(kCCAlgorithmAES128)
let options: Ccoptions = UInt32(kCcoptionECBMode + kCcoptionPKCS7Padding)
var numBytesEncrypted :size_t = 0
let cryptStatus = CCCrypt(operation,algoritm,options,keyData.bytes,keyLength,nil,data.bytes,data.length,cryptData.mutableBytes,cryptData.length,&numBytesEncrypted)
if UInt32(cryptStatus) == UInt32(kCCSuccess) {
cryptData.length = Int(numBytesEncrypted)
var bytes = [UInt8](repeating: 0,count: cryptData.length)
cryptData.getBytes(&bytes,length: cryptData.length)
var hexString = ""
for byte in bytes {
hexString += String(format:"%02x",UInt8(byte))
}
return hexString
}
return nil
}
输出是十六进制字符串:
b9477a54ac7316a29a2fd602f1892e00
AES/ECB/PKCS5Padding 中的预期输出:
Meeting ID : 20201228165764
Passcode: 769762
加密值:
meetingid: "LfD3obeP45AAGXYxPiByvQ=="
passcode: "fcJSdMArO3vUOL/WxwzRfw=="
如何使用 AES/ECB/PKCS5Padding 快速添加 SHA-1 密钥?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)