美文网首页swift
iOS DES加密 解密

iOS DES加密 解密

作者: 黑色幽默_0d96 | 来源:发表于2018-01-23 11:39 被阅读330次

    NSString *const kInitVector = @"ffGGtsdfzxCv5568";

    NSString *const DESKey = @"gg356tt8g5h6j9jh";

    加密方式

    + (NSString *)encodeDesWithString:(NSString *)str{

        NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];

        size_t plainTextBufferSize = [data length];

        const void *vplainText = (const void *)[data bytes];

        CCCryptorStatus ccStatus;

        uint8_t *bufferPtr = NULL;

        size_t bufferPtrSize = 0;

        size_t movedBytes = 0;

        bufferPtrSize = (plainTextBufferSize + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);

        bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));

        memset((void *)bufferPtr, 0x0, bufferPtrSize);

        const void *vkey = (const void *) [DESKey UTF8String];

        const void *vinitVec = (const void *) [kInitVector UTF8String];

        ccStatus = CCCrypt(kCCEncrypt,

                          kCCAlgorithmDES,

                          kCCOptionPKCS7Padding,

                          vkey,

                          kCCKeySizeDES,

                          vinitVec,

                          vplainText,

                          plainTextBufferSize,

                          (void *)bufferPtr,

                          bufferPtrSize,

                          &movedBytes);

        NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];

        NSString *result = [myData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

        return result;

    }

    解密方式

    + (NSString *)decodeDesWithString:(NSString *)str{

            NSData *encryptData = [[NSData alloc] initWithBase64EncodedString:str options:NSDataBase64DecodingIgnoreUnknownCharacters];

            size_t plainTextBufferSize = [encryptData length];

            const void *vplainText = [encryptData bytes];

            CCCryptorStatus ccStatus;

            uint8_t *bufferPtr = NULL;

            size_t bufferPtrSize = 0;

            size_t movedBytes = 0;

            bufferPtrSize = (plainTextBufferSize + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);

            bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));

            memset((void *)bufferPtr, 0x0, bufferPtrSize);

            const void *vkey = (const void *) [DESKey UTF8String];

            const void *vinitVec = (const void *) [kInitVector UTF8String];

            ccStatus = CCCrypt(kCCDecrypt,

                              kCCAlgorithmDES,

                              kCCOptionPKCS7Padding,

                              vkey,

                              kCCKeySizeDES,

                              vinitVec,

                              vplainText,

                              plainTextBufferSize,

                              (void *)bufferPtr,

                              bufferPtrSize,

                              &movedBytes);

            NSString *result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr

                                                                            length:(NSUInteger)movedBytes] encoding:NSUTF8StringEncoding];

            return result;

    }

    相关文章

      网友评论

        本文标题:iOS DES加密 解密

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