美文网首页
自定义编码方式(加密)

自定义编码方式(加密)

作者: PZcoder | 来源:发表于2017-05-02 14:43 被阅读114次

编码要求:
URI非保留字符"包括以下字符:字母(A-Z,a-z)、数字(0-9)、连字号(-)、点号(.)、下划线(_)、波浪线(~),算法实现如下:
//1. 将字符串转换成UTF-8编码的字节流
//2. 保留所有“URI非保留字符”原样不变
//3. 对其余字节做一次RFC 3986中规定的百分号编码(Percent-encoding),即一个“%”后面跟着两个表示该字节值的十六进制字母,字母一律采用大写形式。

在iOS中没有直接的方法可以调用,但是可以通过其他方法拼接组合而成:
1、先筛选不需要处理的字符串,直接拼接;
2、需要处理的字符串使用iOS方法CFBridgingRelease处理
3、拼接完整的字符串

- (NSString *)urlEncode:(NSString *)string
{
    if (!string)
    {
        return @"";
    }
    
    //选择是否转换字符串
    NSString *saveStr = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-._~";//保留字符
    NSMutableString *mtbStr = [NSMutableString string];
    NSString *str;
    
    for (int i = 0; i < string.length; i ++)
    {
        str = [string substringWithRange:NSMakeRange(i, 1)];
        
        if ([saveStr rangeOfString:str].location != NSNotFound)
        {
            [mtbStr appendString:str];
        }
        else
        {
            [mtbStr appendString:[self fixString:str]];
        }
    }
    
    return [NSString stringWithString:mtbStr];
}

//转换字符串
- (NSString *)fixString:(NSString *)str
{
    return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes
                      (NULL,
                       (__bridge CFStringRef)str,
                       NULL,
                       (CFStringRef)@":/?#[]@!$&’()*+,;='",//需要处理的符号
                       CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)));
}

相关文章

  • 自定义编码方式(加密)

    编码要求:URI非保留字符"包括以下字符:字母(A-Z,a-z)、数字(0-9)、连字号(-)、点号(.)、下划线...

  • Netty 编码解码器

    自定义编码解码器 ReplayingDecoder MessageToMessageDecoder

  • iOS代码加密常用加密方式

    iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密、AES加密、BASE64加密,三大...

  • iOS常用加密方式

    iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密、AES加密、BASE64加密,三大...

  • 加密方式方法总结

    加密方式有哪几种 每种加密方式的优缺点 怎么根据需要选择加密方式

  • mysql8.0 连接 找不到指定模块caching_sha2_

    首先查看数据库连接加密方式 plugin:连接加密方式 MySQL8.0加密方式为:caching_sha2_pa...

  • PHP哈希密码

    传统加密方式: md5(密码+盐值); Password Hashing 方式加密

  • iOS-15 加密

    1iOS 常用加密方式讲解 - 简书 2iOS加密方式(RSA签名、加密、AES) - 简书

  • ssh简介

    ssh的加密方式 互联网数据传输,没有进过加密是很危险的,使用数据加密方式进行保护是非常有必要的。目前加密的方式有...

  • 公钥、私钥、数字签名和数字证书简介

    公钥、私钥、数字签名和数字证书简介 加密方式 加密方式一共分为两种对称加密和非对称加密 对称加密 加密和解密使用的...

网友评论

      本文标题:自定义编码方式(加密)

      本文链接:https://www.haomeiwen.com/subject/pnbctxtx.html