Drupal和目标C基本64失配

我有个字节的这个序列(从HTML印刷,所以道歉丑陋格式)Drupal和目标C基本64失配

193<br/>250<br/>194<br/>129<br/>62<br/>60<br/>12<br/>171<br/>199<br/>96<br/>13<br/>125<br/>166<br/>175<br/>80<br/>85<br/>137<br/>29<br/>15<br/>189<br/>33<br/>231<br/>237<br/>98<br/>165<br/>35<br/>75<br/>250<br/>181<br/>150<br/>35<br/>175<br/>129<br/>174<br/>13<br/>13<br/>121<br/>229<br/>30<br/>173<br/>112<br/>210<br/>2<br/>165<br/>110<br/>113<br/>141<br/>166<br/>102<br/>105<br/>33<br/>82<br/>220<br/>233<br/>118<br/>36<br/>73<br/>88<br/>196<br/>152<br/>15<br/>231<br/>164<br/>119<br/> 

当我使用的Drupal功能:[_password_base64_encode][1]我得到以下的base64串:

/fjk/u1DAgulUpETay8IJZM5DoP6briMZCmGuLfZXwOUiqE1tJi5h0bo0IePlpcdaZK6GlRuqFGGMFAaDQCdr/ 

但是当我使用字节序列在我的iOS应用程序的代码:

NSString *base64Encoded = [hash base64EncodedStringWithOptions:0]; 

我得到:

wfrCgT48DKvHYA19pq9QVYkdD70h5+1ipSNL 

为什么会这样?

感谢

回答:

移植了功能_password_base64_encode到iOS:

- (NSString*)drupalBase64PasswordEncode:(NSData*)data { 

NSUInteger count = [data length];

int i = 0;

NSString *itTo64String = @"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

const char *itTo64 = [itTo64String cStringUsingEncoding:NSUTF8StringEncoding];

char *input = [data bytes];

NSMutableString *output = [[NSMutableString alloc] init];

do {

unsigned char value = (unsigned char)input[i++];

int value2;

unsigned char toInsert = itTo64[value & 0x3f];

[output appendString:[NSString stringWithFormat:@"%c" , toInsert]];

if (i < count) {

value2 = value | ((unsigned char)input[i] << 8);

}

toInsert = itTo64[(value2 >> 6) & 0x3f];

[output appendString:[NSString stringWithFormat:@"%c" , toInsert]];

if (i++ >= count) {

break;

}

if (i < count) {

value2 = value2 | ((unsigned char)input[i] << 16);

}

toInsert = itTo64[(value2 >> 12) & 0x3F];

[output appendString:[NSString stringWithFormat:@"%c" , toInsert]];

if (i++ >= count) {

break;

}

toInsert = itTo64[(value2 >> 18) & 0x3F];

[output appendString:[NSString stringWithFormat:@"%c" , toInsert]];

}while(i < count);

return output;

}

回答:

最有可能的解释是,你与你的预期字符串编码以及垃圾 - 你可以转储被编码的实际字符串,如

$string = ' ... '; 

var_dump($string);

$base64_string = _password_base64_encode($string);

var_dump($string);

这是最有可能的你的编码包括不同的字符(中断,不同格式的换行符等)。

另外,您可能希望将输出与PHP的原生base64_encode函数进行比较,并比较结果。

以上是 Drupal和目标C基本64失配 的全部内容, 来源链接: utcz.com/qa/260955.html

回到顶部