2つのNSStringの間にxorを作成する方法があります。NSLogで結果を出力していますが、期待通りではありません。 私は何が間違っているのか把握できません。2つのNSStringの間のXORが間違った結果を返します
(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);
}
}
なぜ最初に** vlen%klen **でkを開始しますか?その初期値は0であってはなりませんか?また、あなたのプログラムが印刷するものの例と、それを印刷するために期待するものをあなたに教えてくれれば助かります。 –
それは印刷 "UWU"は16進数で "707070"を印刷し、k = 0では "PPP"を印刷します。それで、k = 0で正しく動作しているかもしれません。当分の間、私はそれが正しく働いていると信じています。 – bruno