iOS 自定义加密算法——加密
2016-12-22 17:26
260 查看
十六进制转二进制的时候会用到
self.setSecretDic = [[NSMutableDictionaryalloc]
initWithCapacity:16];
[self.setSecretDicsetObject:@"0000"forKey:@"0"];
[self.setSecretDicsetObject:@"0001"forKey:@"1"];
[self.setSecretDicsetObject:@"0010"forKey:@"2"];
[self.setSecretDicsetObject:@"0011"forKey:@"3"];
[self.setSecretDicsetObject:@"0100"forKey:@"4"];
[self.setSecretDicsetObject:@"0101"forKey:@"5"];
[self.setSecretDicsetObject:@"0110"forKey:@"6"];
[self.setSecretDicsetObject:@"0111"forKey:@"7"];
[self.setSecretDicsetObject:@"1000"forKey:@"8"];
[self.setSecretDicsetObject:@"1001"forKey:@"9"];
[self.setSecretDicsetObject:@"1010"forKey:@"a"];
[self.setSecretDicsetObject:@"1011"forKey:@"b"];
[self.setSecretDicsetObject:@"1100"forKey:@"c"];
[self.setSecretDicsetObject:@"1101"forKey:@"d"];
[self.setSecretDicsetObject:@"1110"forKey:@"e"];
[self.setSecretDicsetObject:@"1111"forKey:@"f"];
二进制转十六进制的时候会用到
self.removeSecretDic = [[NSMutableDictionary
alloc] initWithCapacity:16];
[self.removeSecretDic
setObject:@"0"
forKey:@"0000"];
[self.removeSecretDic
setObject:@"1"
forKey:@"0001"];
[self.removeSecretDic
setObject:@"2"
forKey:@"0010"];
[self.removeSecretDic
setObject:@"3"
forKey:@"0011"];
[self.removeSecretDic
setObject:@"4"
forKey:@"0100"];
[self.removeSecretDic
setObject:@"5"
forKey:@"0101"];
[self.removeSecretDic
setObject:@"6"
forKey:@"0110"];
[self.removeSecretDic
setObject:@"7"
forKey:@"0111"];
[self.removeSecretDic
setObject:@"8"
forKey:@"1000"];
[self.removeSecretDic
setObject:@"9"
forKey:@"1001"];
[self.removeSecretDic
setObject:@"a"
forKey:@"1010"];
[self.removeSecretDic
setObject:@"b"
forKey:@"1011"];
[self.removeSecretDic
setObject:@"c"
forKey:@"1100"];
[self.removeSecretDic
setObject:@"d"
forKey:@"1101"];
[self.removeSecretDic
setObject:@"e"
forKey:@"1110"];
[self.removeSecretDic
setObject:@"f"
forKey:@"1111"];
#pragma mark - 加密
- (void)setSecretWithString:(NSString *)string{
NSData *binaryData = [stringdataUsingEncoding:
NSUTF8StringEncoding];
Byte *binaryByte = (Byte *)[binaryDatabytes];
NSString *hexString=@"";
for(int i=0;i<[binaryDatalength];i++)
{
NSString *newHexStr = [NSStringstringWithFormat:@"%x",binaryByte[i]&0xff];
if([newHexStrlength]==1){
hexString = [NSStringstringWithFormat:@"%@0%@",hexString,newHexStr];
}else{
hexString = [NSStringstringWithFormat:@"%@%@",hexString,newHexStr];
}
}
NSLog(@"16进制数为:\n%@",hexString);
[selfhexStringTranslateToBinaryString:hexString];
}
#pragma mark - 将十六进制转化为二进制
- (void)hexStringTranslateToBinaryString:(NSString *)hexString{
NSString *binaryString=[[NSStringalloc]
init];
for (int i =0; i < [hexString
length]; i++) {
NSRange rage;
rage.length =1;
rage.location = i;
NSString *key = [hexStringsubstringWithRange:rage];
binaryString = [NSStringstringWithFormat:@"%@%@",binaryString,[NSStringstringWithFormat:@"%@",[self.setSecretDicobjectForKey:key]]];
}
NSLog(@"转化后的二进制为:\n%@",binaryString);
[selfchangeBinaryString:binaryString];
}
#pragma mark - 移位(改变二进制数的某一个或某几个位)
- (void)changeBinaryString:(NSString *)binaryString{
NSMutableArray *binaryArray = [[NSMutableArrayalloc]
init];
for (int i=0; i<[binaryStringlength];
i++) {
NSRange rage;
rage.length =1;
rage.location = i;
NSString *character = [binaryStringsubstringWithRange:rage];
[binaryArray addObject:character];
}
[binaryArray exchangeObjectAtIndex:0withObjectAtIndex:binaryArray.count-1];
NSString *newBinaryString =@"";
for (NSInteger i =0; i < binaryArray.count;
i++) {
newBinaryString = [newBinaryString stringByAppendingFormat:@"%@",[binaryArrayobjectAtIndex:i]];
}
//newBinaryString就是移位后的数据
NSLog(@"移位后的二进制为:\n%@",newBinaryString);
[selfbinaryStringToHexString:newBinaryString];
}
#pragma mark - 二进制转为十六进制字符串
- (void)binaryStringToHexString:(NSString *)newBinaryString{
NSString *hexString=@"";
for (int i=0; i<[newBinaryStringlength]/4;
i++) {
NSRange rage;
rage.length =4;
rage.location = i*4;
NSString *key = [newBinaryStringsubstringWithRange:rage];
hexString = [NSStringstringWithFormat:@"%@%@",hexString,[NSStringstringWithFormat:@"%@",[self.removeSecretDicobjectForKey:key]]];
}
NSLog(@"二进制字符串转为十六进制字符串:\n%@",hexString);
[selfunlokHexStringTranslateToBinaryString:hexString];
}
self.setSecretDic = [[NSMutableDictionaryalloc]
initWithCapacity:16];
[self.setSecretDicsetObject:@"0000"forKey:@"0"];
[self.setSecretDicsetObject:@"0001"forKey:@"1"];
[self.setSecretDicsetObject:@"0010"forKey:@"2"];
[self.setSecretDicsetObject:@"0011"forKey:@"3"];
[self.setSecretDicsetObject:@"0100"forKey:@"4"];
[self.setSecretDicsetObject:@"0101"forKey:@"5"];
[self.setSecretDicsetObject:@"0110"forKey:@"6"];
[self.setSecretDicsetObject:@"0111"forKey:@"7"];
[self.setSecretDicsetObject:@"1000"forKey:@"8"];
[self.setSecretDicsetObject:@"1001"forKey:@"9"];
[self.setSecretDicsetObject:@"1010"forKey:@"a"];
[self.setSecretDicsetObject:@"1011"forKey:@"b"];
[self.setSecretDicsetObject:@"1100"forKey:@"c"];
[self.setSecretDicsetObject:@"1101"forKey:@"d"];
[self.setSecretDicsetObject:@"1110"forKey:@"e"];
[self.setSecretDicsetObject:@"1111"forKey:@"f"];
二进制转十六进制的时候会用到
self.removeSecretDic = [[NSMutableDictionary
alloc] initWithCapacity:16];
[self.removeSecretDic
setObject:@"0"
forKey:@"0000"];
[self.removeSecretDic
setObject:@"1"
forKey:@"0001"];
[self.removeSecretDic
setObject:@"2"
forKey:@"0010"];
[self.removeSecretDic
setObject:@"3"
forKey:@"0011"];
[self.removeSecretDic
setObject:@"4"
forKey:@"0100"];
[self.removeSecretDic
setObject:@"5"
forKey:@"0101"];
[self.removeSecretDic
setObject:@"6"
forKey:@"0110"];
[self.removeSecretDic
setObject:@"7"
forKey:@"0111"];
[self.removeSecretDic
setObject:@"8"
forKey:@"1000"];
[self.removeSecretDic
setObject:@"9"
forKey:@"1001"];
[self.removeSecretDic
setObject:@"a"
forKey:@"1010"];
[self.removeSecretDic
setObject:@"b"
forKey:@"1011"];
[self.removeSecretDic
setObject:@"c"
forKey:@"1100"];
[self.removeSecretDic
setObject:@"d"
forKey:@"1101"];
[self.removeSecretDic
setObject:@"e"
forKey:@"1110"];
[self.removeSecretDic
setObject:@"f"
forKey:@"1111"];
#pragma mark - 加密
- (void)setSecretWithString:(NSString *)string{
NSData *binaryData = [stringdataUsingEncoding:
NSUTF8StringEncoding];
Byte *binaryByte = (Byte *)[binaryDatabytes];
NSString *hexString=@"";
for(int i=0;i<[binaryDatalength];i++)
{
NSString *newHexStr = [NSStringstringWithFormat:@"%x",binaryByte[i]&0xff];
if([newHexStrlength]==1){
hexString = [NSStringstringWithFormat:@"%@0%@",hexString,newHexStr];
}else{
hexString = [NSStringstringWithFormat:@"%@%@",hexString,newHexStr];
}
}
NSLog(@"16进制数为:\n%@",hexString);
[selfhexStringTranslateToBinaryString:hexString];
}
#pragma mark - 将十六进制转化为二进制
- (void)hexStringTranslateToBinaryString:(NSString *)hexString{
NSString *binaryString=[[NSStringalloc]
init];
for (int i =0; i < [hexString
length]; i++) {
NSRange rage;
rage.length =1;
rage.location = i;
NSString *key = [hexStringsubstringWithRange:rage];
binaryString = [NSStringstringWithFormat:@"%@%@",binaryString,[NSStringstringWithFormat:@"%@",[self.setSecretDicobjectForKey:key]]];
}
NSLog(@"转化后的二进制为:\n%@",binaryString);
[selfchangeBinaryString:binaryString];
}
#pragma mark - 移位(改变二进制数的某一个或某几个位)
- (void)changeBinaryString:(NSString *)binaryString{
NSMutableArray *binaryArray = [[NSMutableArrayalloc]
init];
for (int i=0; i<[binaryStringlength];
i++) {
NSRange rage;
rage.length =1;
rage.location = i;
NSString *character = [binaryStringsubstringWithRange:rage];
[binaryArray addObject:character];
}
[binaryArray exchangeObjectAtIndex:0withObjectAtIndex:binaryArray.count-1];
NSString *newBinaryString =@"";
for (NSInteger i =0; i < binaryArray.count;
i++) {
newBinaryString = [newBinaryString stringByAppendingFormat:@"%@",[binaryArrayobjectAtIndex:i]];
}
//newBinaryString就是移位后的数据
NSLog(@"移位后的二进制为:\n%@",newBinaryString);
[selfbinaryStringToHexString:newBinaryString];
}
#pragma mark - 二进制转为十六进制字符串
- (void)binaryStringToHexString:(NSString *)newBinaryString{
NSString *hexString=@"";
for (int i=0; i<[newBinaryStringlength]/4;
i++) {
NSRange rage;
rage.length =4;
rage.location = i*4;
NSString *key = [newBinaryStringsubstringWithRange:rage];
hexString = [NSStringstringWithFormat:@"%@%@",hexString,[NSStringstringWithFormat:@"%@",[self.removeSecretDicobjectForKey:key]]];
}
NSLog(@"二进制字符串转为十六进制字符串:\n%@",hexString);
[selfunlokHexStringTranslateToBinaryString:hexString];
}
相关文章推荐
- .NET中的加密算法总结(自定义加密Helper类续)
- iOS基础8:自定义MyData/自定义SQLite用于网络判断,版本判断,图片缓存处理,下载或者上传的GET或POST请求,加密手段,.数据解析
- .NET中的加密算法总结(自定义加密Helper类续)
- iOS中如何自定义加密缓存及缓存原理分析(第一节:缓存原理分析)
- iOS 自定义加密算法——原理
- 详解.NET中的加密算法总结(自定义加密Helper类续)
- .NET中的加密算法总结(自定义加密Helper类续)
- DES加密之自定义密匙加密与加密算法
- 3des加密Android和iOS的加密算法有时候位数是不同的。解决办法
- java、android、ios、js数据传递加密算法之AES加密
- .NET中的加密算法总结(自定义加密Helper类续)
- iOS中如何自定义加密缓存及缓存原理分析(第二节:自定义缓存类)
- .NET中的加密算法总结(自定义加密Helper类续)
- iOS 自定义加密解密——解密
- 自定义加密算法打造不死网马
- 微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇
- 使用jetty 嵌入式构建 https 服务--自定义keystore 和加密方法
- 关于IOS中的中文异或加密以及base64编解码问题
- [iOS]自定义 TableViewCell 实现圆角/渐变色 TableView
- MD5和一个可逆加密算法相接合的加密和解密程序