Я делаю 3Des шифрование и дешифрование. Я получаю CCCryptorStatus "-4310", когда я вызываю метод шифрования класса шифра
Пожалуйста, проверьте код и дайте мне знать, если я делаю что-то не так в моем коде
let mdKey = "12345678901234567890123456789012"
let md = MessageDigest(.md5)
let keydata = mdKey.data(using: String.Encoding.ascii)
md.bytes = keydata!.bytes
md.data = NSMutableData.init(data: keydata ?? Data())
let result = md.final()
print(result)
let objCipher = Cipher(algorithm: Cipher.Algorithm.tripleDES, options: [.ECBMode,.PKCS7Padding])
do{
let encription = try objCipher.encrypt(messageData!.bytes, key: keydata!.bytes)
print(encription)
}catch let errorMessage{
print(errorMessage)
}
// Методы класса шифрования //
public func encrypt(_ data: Data, key: Key) throws -> [UInt8] {
return try cryptoOperation(data, key: key, operation: .encrypt)
}
public func decrypt(_ data: Data, key: Key) throws -> [UInt8] {
return try cryptoOperation(data, key: key, operation: .decrypt)
}
fileprivate func cryptoOperation(_ data: Data, key: Key, operation: Operation) throws -> [UInt8] {
var dataOutMoved = 0
var outData = [UInt8](repeating: UInt8(0), count: Int(data.count + self.algorithm.blockSize))
let ivData = "iv-salt-string--".data(using: String.Encoding.ascii)//self.iv == nil ? nil : UnsafeRawPointer(self.iv!)
let status = CCCrypt(operation.rawValue, // operation
self.algorithm.rawValue, // algorithm
self.options.rawValue, // options
key, // key
key.count, // keylength
ivData!.bytes, // iv
data, // input data
data.count, // input length
&outData, // output buffer
outData.count, // output buffer length
&dataOutMoved) // output bytes real length
if status == CCCryptorStatus(kCCSuccess) {
return Array(outData[0..<dataOutMoved])
} else {
throw SCryptoError(rawValue: status)!
}
}