IOS Swift3 DES、ECB、填充加密
下面是我的android java代码,实际上如何在IOS Swift3中编写IOS Swift3 DES、ECB、填充加密,ios,swift,Ios,Swift,下面是我的android java代码,实际上如何在IOS Swift3中编写 final SecretKey key = new SecretKeySpec(keyBytes, "DESede"); final Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, key); final byte[] cipherText = cipher.d
final SecretKey key = new SecretKeySpec(keyBytes, "DESede");
final Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
final byte[] cipherText = cipher.doFinal(plainTextBytes);
在此查找AES或DES通用加密示例,并根据需要对3DES进行更改。确保密钥为24字节 更改:
- 算法:
CCAlgorithm3DES
- 模式:
kCCModeECB
- 选项:
ccPKCS7Padding
desed
称为3DES或三重DES
3DES确实不安全,尤其是2键3DES。如果可能,使用随机IV更新AES-CBC
这是未经测试的Swift 3(也应与Swift4配合使用)代码,请注意上面关于密钥长度的警告:
func trippleDESCrypt(data:Data, keyData:Data, ivData:Data, operation:Int) -> Data? {
let cryptLength = size_t(data.count + kCCBlockSize3DES)
var cryptData = Data(repeating:0, count:cryptLength)
var numBytesEncrypted :size_t = 0
let keyLength = keyData.count
let algoritm: CCAlgorithm = UInt32(kCCAlgorithm3DES)
let options: CCOptions = UInt32(kCCOptionPKCS7Padding | kCCModeECB)
let cryptStatus = cryptData.withUnsafeMutableBytes {cryptBytes in
data.withUnsafeBytes {dataBytes in
ivData.withUnsafeBytes {ivBytes in
keyData.withUnsafeBytes {keyBytes in
CCCrypt(CCOperation(operation),
algoritm,
options,
keyBytes, keyLength,
ivBytes,
dataBytes, data.count,
cryptBytes, cryptLength,
&numBytesEncrypted)
}
}
}
}
if UInt32(cryptStatus) == UInt32(kCCSuccess) {
cryptData.count = numBytesEncrypted
}
else {
print("Error: \(cryptStatus)")
return nil
}
return cryptData
}
通常,您需要有一个包含导入的桥接头文件:
#import <CommonCrypto/CommonCrypto.h>
3DES-ECB(DESede是3DES)确实不安全,尤其是2键3DES。如果在所有可能的更新到AES-CBC与随机IV。真的很好的答案!!!最后我得到了正确的加密值!!!但我将“kCCModeECB”改为“kCCOptionECBMode”。
Security.framework.