2 개의 NSString 사이에 xor를 만드는 방법이 있는데, NSLog에서 결과를 인쇄하고 있지만 예상치 않습니다. 내가 잘못하고있는 것을 파악할 수 없습니다.Xor 2 사이의 NSString 결과가 잘못됨
(void)XorSecretKeyDeviceId
{
NSString* secretKey = @"123";//
NSString* deviceId = @"abcdef";//
NSData* stringKey = [secretKey dataUsingEncoding:NSUTF8StringEncoding];
NSData* stringDeviceId = [deviceId dataUsingEncoding:NSUTF8StringEncoding];
unsigned char* pBytesInput = (unsigned char*)[stringKey bytes]; //Bytes
unsigned char* pBytesKey = (unsigned char*)[stringDeviceId bytes];
unsigned int vlen = [secretKey length]; //Keys Length
unsigned int klen = [deviceId length];
unsigned int v;
unsigned int k = vlen % klen;
unsigned char c;
for(v = 0; v < vlen; v++)
{
c = pBytesInput[v]^pBytesKey[k];
pBytesInput[v] = c;
NSLog(@"%c", c);
k = (++k < klen ? k : 0);
}
}
왜 처음에 k를 ** vlen % klen **에서 시작합니까? 그것의 초기 값은 0이 아니어야합니까? 또한 프로그램이 인쇄하는 내용의 예와 인쇄하기를 기대하는 내용을 제공하면 도움이됩니다. –
인쇄 중 "UWU"는 "707070"을 16 진수로, k = 0으로 "PPP"를 인쇄합니다. 그래서 아마도 k = 0으로 올바르게 작동 할 것입니다. 당분간 나는 그것이 올바르게 작동하고 있다고 믿을 것입니다. – bruno