美文网首页
iOS的base64 url safe

iOS的base64 url safe

作者: hongzhenw | 来源:发表于2020-06-09 16:57 被阅读0次

在Android提供了base64 url safe只需要设置相应的FLAG即可:

  1. NO_WRAP:不换行

  2. NO_PADDING:"="号补齐去除,base64会对字符进行串长度余4的"="的补位,需去除"="

  3. URL_SAFE:安全的URL编码,base64转码过程中会生成“+”,“”,“=”这些会被URL进行转码的特殊字符,导致前后台数据不同,所以需要将这些字符替代为URL不会进行转码的字符,保证数据同步;"-" -> "+","_" -> "/"

示例代码如下:

String encode = Base64.encodeToString("朱心怡".getBytes(), Base64.URL_SAFE | Base64.NO_PADDING | Base64.NO_WRAP);
Log.e("aTag",encode);

byte[] decode = Base64.decode(encode, Base64.URL_SAFE | Base64.NO_PADDING | Base64.NO_WRAP);
Log.e("aTag",new String(decode));

输出结果:

E/aTag: 5pyx5b-D5oCh
E/aTag: 朱心怡

iOS就没有自带API,只能自己写了

// base64 url 编码
- (NSString *)base64UrlEncoder:(NSString *)str {
    NSData *data = [[str dataUsingEncoding:NSUTF8StringEncoding] base64EncodedDataWithOptions:0];
    NSMutableString *base64Str = [[NSMutableString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    base64Str = (NSMutableString * )[base64Str stringByReplacingOccurrencesOfString:@"+" withString:@"-"];
    base64Str = (NSMutableString * )[base64Str stringByReplacingOccurrencesOfString:@"/" withString:@"_"];
    base64Str = (NSMutableString * )[base64Str stringByReplacingOccurrencesOfString:@"=" withString:@""];
    return base64Str;
}

// base64 url 解码
- (NSString *)base64UrlDecoder:(NSString *)str {
    NSMutableString *base64Str = [[NSMutableString alloc] initWithString:str];
    base64Str = (NSMutableString * )[base64Str stringByReplacingOccurrencesOfString:@"-" withString:@"+"];
    base64Str = (NSMutableString * )[base64Str stringByReplacingOccurrencesOfString:@"_" withString:@"/"];
    NSInteger mod4 = base64Str.length % 4;
    if (mod4) {
        [base64Str appendString:[@"====" substringToIndex:(4 - mod4)]];
    }
    NSData *data = [[NSData alloc] initWithBase64EncodedString:base64Str options:0];
    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

使用如下:

NSString *str = @"朱心怡";
NSString *urlEncoder = [self base64UrlEncoder:str];
NSLog(@"编码:%@",urlEncoder);

NSString *urlDecoder = [self base64UrlDecoder:urlEncoder];
NSLog(@"解码:%@",urlDecoder);

输出结果:

编码:5pyx5b-D5oCh
解码:朱心怡

相关文章

  • iOS URL安全的Base64编码、解码

    参考iOS开发探索-Base64编码iOS URL编码&base64编码URL安全的Base64编码,解码 为什么...

  • iOS的base64 url safe

    在Android提供了base64 url safe只需要设置相应的FLAG即可: NO_WRAP:不换行NO_P...

  • iOS SHA1 和 Base64 url_safe 加密

    iOS SHA1 和 Base64 url_safe 加密 网上查找的资料SHA1加密后大部分获取的是字符串,如果...

  • iOS加密(一):Base64 +AES +MD5模式

    由于公司对于信息安全比较注重,需要对json数据并用AES加密,然后生成url_safe base64编码。然后继...

  • 2017.09.28

    一.对接完剩余的搜索页面,调整了一些样式的显示。 二 url safe base64踩坑, 官方居然只提供pyth...

  • iOS 7.0后的Base64全解

    项目中的Base64 在iOS 项目中经常会使用到Base64转解码,尤其在URL请求、图片转码上传等方面使用频繁...

  • base64 和 url base64 和 encodeURIC

    1 先来看base64编码 2 再看url base64编码 可以看出,非url base64不会对斜杠进行编码。...

  • 加密编码总结

    url编码 base64编码 工作中碰到url与base64配合加解密的问题,base64编码后的字符串中可能含有...

  • nodejs 图片base64处理

    一、base64转图片 二、图片url转base64 三、图片转base64

  • iOS 11布局——SafeArea

    iOS 11 引入了safe area的概念,safe area 定义了视图的可视区域,保证在safe area ...

网友评论

      本文标题:iOS的base64 url safe

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