iOS 安卓 服务器后台 公用的简单加密和解密
#pragma mark 加密字符串
encryption 加密结果
decoding 解密结果
+ (NSString *)encryptForPlainText:(NSString *)plainText
{
//保存加密后的字符
NSMutableString *encryption=[NSMutableStringstring];
//编码转换后的字符串 UTF_8->iso-8859-1
NSString *encoding=[[NSStringalloc]initWithData:[plainTextdataUsingEncoding:NSUTF8StringEncoding]encoding:NSISOLatin1StringEncoding];
for(int i=0,j=0;i<encoding.length;i++,j++){
if(j==SECRETKEY.length){
j=0;
}
//异或后的字符
char cipher=(char)([encodingcharacterAtIndex:i]^[SECRETKEYcharacterAtIndex:j]);
//NSLog(@"%c转成16进制的字符串:%@,%@",cipher,[NSString stringWithFormat:@"%hhx",cipher],[NSString stringWithFormat:@"%x",cipher&0xff]);
//转成16进制形式的字符串 x8b转成8b字符串
NSString *strCipher= [NSStringstringWithFormat:@"%hhx",cipher];
if(strCipher.length ==1){
[encryption appendFormat:@"0%@",strCipher];
}else{
[encryption appendString:strCipher];
}
}
return encryption;
}
#pragma mark 解密如果不为加密字符则返回原字符
+ (NSString *)decryptForEncryption:(NSString *)encryption {
//保存解密后的字符
NSMutableString *decryption=[NSMutableStringstring];
//解码字符
NSString *decoding=nil;
for(int i=0,j=0;i<encryption.length/2;i++,j++){
if(j==SECRETKEY.length){
j=0;
}
//截取16进制形式的字符串 x8b中的8b
NSString *tem=[encryptionsubstringWithRange:NSMakeRange(i*2,2)];
char *endptr;
//把16进制形式的字符串转为字符
char n=(char)(int)strtoul([temUTF8String],&endptr,16);
//判断是否为加密字符
if (n==" "&&*endptr!=" ") {
[decryption setString:@""];
break;
}
[decryption appendFormat:@"%c",(char)(n^[SECRETKEYcharacterAtIndex:j])];
}
if (![decryptionisEqualToString:@""]) {
//编码后的字符串 iso-8859-1 -> UTF_8
decoding=[[NSStringalloc]initWithData:[[decryptioncopy] dataUsingEncoding:NSISOLatin1StringEncoding]encoding:NSUTF8StringEncoding];
}
if (decoding==nil) {
decoding=encryption;
}
return decoding;
}