iOS常见加密方式

MD5加密

-(NSString *)MD5ForLower32Bate:(NSString *)str

{

    constchar* input = [str UTF8String];

    unsignedchar result[CC_MD5_DIGEST_LENGTH];

    CC_MD5(input, (CC_LONG)strlen(input), result);

    

    NSMutableString *digest = [NSMutableStringstringWithCapacity:CC_MD5_DIGEST_LENGTH *2];

    for (NSInteger i =0; i < CC_MD5_DIGEST_LENGTH; i++) {

        [digest appendFormat:@"%02x", result[i]];

    }

    

    return digest;

}

AES加密

- (NSData *)AES128EncryptWithKey:(NSString *)key  //加密

{

    char keyPtr[kCCKeySizeAES128+1];

//    bzero(keyPtr, sizeof(keyPtr));

    memset(keyPtr,0, sizeof(keyPtr));

    [key getCString:keyPtrmaxLength:sizeof(keyPtr)encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [selflength];

    size_t bufferSize = dataLength +kCCBlockSizeAES128;

    void *buffer =malloc(bufferSize);

    size_t numBytesEncrypted =0;

    CCCryptorStatus cryptStatus =CCCrypt(kCCEncrypt,kCCAlgorithmAES,

                                         0x0000 | kCCOptionECBMode,

                                          keyPtr,kCCBlockSizeAES128,

                                         NULL,

                                          [selfbytes], dataLength,

                                          buffer, bufferSize,

                                          &numBytesEncrypted);

    if (cryptStatus ==kCCSuccess) {

        return [NSDatadataWithBytesNoCopy:buffer length:numBytesEncrypted];

    }

    free(buffer);

    returnnil;

}


AES解密


- (NSData *)AES128DecryptWithKey:(NSString *)key  //解密

{

    char keyPtr[kCCKeySizeAES128+1];

//    bzero(keyPtr, sizeof(keyPtr));

    memset(keyPtr, 0, sizeof(keyPtr));

    [key getCString:keyPtrmaxLength:sizeof(keyPtr)encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [selflength];

    size_t bufferSize = dataLength +kCCBlockSizeAES128;

    void *buffer = malloc(bufferSize);

    size_t numBytesDecrypted =0;

    CCCryptorStatus cryptStatus =CCCrypt(kCCDecrypt,kCCAlgorithmAES128,

                                          kCCOptionPKCS7Padding |kCCOptionECBMode,

                                          keyPtr, kCCBlockSizeAES128,

                                          NULL,

                                          [selfbytes], dataLength,

                                          buffer, bufferSize,

                                          &numBytesDecrypted);

    if (cryptStatus ==kCCSuccess) {

        return [NSDatadataWithBytesNoCopy:buffer length:numBytesDecrypted];

    }

    free(buffer);

    return nil;

}


NSData转化为base64编码


- (NSString *)newStringInBase64FromData           //追加64编码

{

    NSMutableString *dest = [[NSMutableStringalloc] initWithString:@""];

    unsignedchar * working = (unsignedchar *)[selfbytes];

    int srcLen = (int)[selflength];

    for (int i=0; i< srcLen; i +=3){

        for (int nib=0; nib<4; nib++) {

            int byt = (nib ==0)?0:nib-1;

            int ix = (nib+1)*2;

            if (i+byt >= srcLen)break;

            unsignedchar curr = ((working[i+byt] << (8-ix)) &0x3F);

            if (i+nib < srcLen) curr |= ((working[i+nib] >> ix) &0x3F);

            [dest appendFormat:@"%c",base64[curr]];

        }

    }

    return dest;

}


NAData转为16进制

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

    Byte *bytes = (Byte *)[databytes];

    // 下面是Byte转换为16进制。

    NSString *hexStr =@"";

    for(int i=0; i<[datalength]; i++) {

        NSString *newHexStr = [NSStringstringWithFormat:@"%x",bytes[i] &0xff]; //16进制数

        newHexStr = [newHexStr uppercaseString];

        

        if([newHexStr length] == 1) {

            newHexStr = [NSStringstringWithFormat:@"0%@",newHexStr];

        }

        

        hexStr = [hexStr stringByAppendingString:newHexStr];

        

    }

    return hexStr;

}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cisco IOS 3640 是思科推出的一种路由器操作系统。它是一种高性能、可扩展的软件,为企业和服务提供商网络提供了丰富的功能和功能。它可以在Cisco 3600系列路由器上运行,这些路由器提供了强大的网络连接、路由和交换功能。 Cisco IOS 3640具有多种技术和功能,使其成为企业网络的理想选择。它支持常见的路由协议,如RIP、OSPF和EIGRP,可以实现灵活的网络拓扑和快速的数据传输。此外,它还支持多个广域网(WAN)接口,包括Frame Relay、ATM和ISDN,可满足不同企业的需求。 该操作系统还提供了高级的安全特性,包括网络防火墙、虚拟专用网(VPN)和IPv6支持。它可以通过实施访问控制列表(ACL)和加密技术来保护网络免受未经授权的访问和攻击。VPN功能可以为企业提供安全的远程访问和分支办公室连接。此外,IPv6支持使网络能够适应未来的互联网发展。 除了常见的路由和安全功能外,Cisco IOS 3640还提供了其他的增强功能。它支持质量服务(QoS),可以优先处理关键应用程序的数据传输,提供更快的响应时间和更好的用户体验。此外,它还支持网络管理和监控工具,如Simple Network Management Protocol(SNMP)和NetFlow,帮助管理员监视和优化网络性能。 总之,Cisco IOS 3640是一种功能丰富、安全可靠的路由器操作系统,适用于中小型企业和服务提供商。它的灵活性和可扩展性使其成为构建可靠和安全网络解决方案的理想选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值