I worte questi metodi in Objective-C. Sono solo checksum e XOR alcuni NSData
Checksum e XOR in Swift
- (void)XOR:(NSMutableData *)inputData withKey:(NSData *)key
{
unsigned char* inputByteData = (unsigned char*)[inputData mutableBytes];
unsigned char* keyByteData = (unsigned char*)[key bytes];
for (int i = 0; i < [inputData length]; i++)
{
inputByteData[i] = inputByteData[i]^keyByteData[i % [key length]];
}
}
- (Byte)checkSum:(NSMutableData *)data withLength:(Byte)dataLength
{
Byte * dataByte = (Byte *)malloc(dataLength);
memcpy(dataByte, [data bytes], dataLength);
Byte result = 0;
int count = 0;
while (dataLength>0) {
result += dataByte[count];
dataLength--;
count++;
};
result = result&0xff;
return result&0xff;
}
Tuttavia, io non sono a conoscenza operatori bit per bit, in particolare a Swift, con questi UnsafeMutablePointer<Void>
... cose.
Qualcuno può aiutarmi a convertire questo? (Fondamentalmente, ho bisogno di checksum e funzioni XOR)
Un'altra cosa, dovrebbero essere inserite nell'estensione NSData/NSMutableData
?
Grazie.
Non è necessario utilizzare 'unsafeBitCast'. Ad esempio: let k = UnsafeBufferPointer (inizio: UnsafePointer (key.bytes), count: key.length) '. –
@MartinR Grazie per la buona informazione. Il mio codice è migliorato. – findall
Grazie. Lo verificherò e contrassegnerò la tua risposta come accettata più tardi;) –