使用des cbc模式加密/解密字符串obj-c [英] Encrypt/decrypt string with des cbc mode obj-c

查看:141
本文介绍了使用des cbc模式加密/解密字符串obj-c的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在对象世界里很新,我想知道如何加密一个字符串在des? 200的X- 200旗新新新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新旗新新新旗新新旗新新旗新旗新旗新旗新旗新旗新旗新旗新旗新新新旗新旗新新旗新新新旗新旗新旗新旗新旗新新旗新新新新旗新新旗新新旗新新旗新旗新旗新旗新旗新旗新旗新新旗新新新旗新旗新旗新旗新旗新旗新旗新旗新新旗新新旗新新旗新旗新旗新旗新旗新旗新新旗新新旗新新旗新旗新旗新旗新旗新旗新旗新旗新旗新旗新新旗新旗新旗新旗新旗新旗新旗新旗新旗新旗新旗新旗新旗新旗b $ b

我的代码

  NSString * key = @abc43HU0; 
NSString * token = @hellohello;


const void * vplainText;
size_t plainTextBufferSize;

plainTextBufferSize = [token length];
vplainText =(const void *)[token UTF8String];

CCCryptorStatus ccStatus;
uint8_t * bufferPtr = NULL;
size_t bufferPtrSize = 0;
size_t * movedBytes = NULL;

bufferPtrSize =(plainTextBufferSize + kCCBlockSize3DES)& 〜(kCCBlockSize3DES - 1);
bufferPtr = malloc(bufferPtrSize * sizeof(uint8_t));
memset((void *)bufferPtr,0x0,bufferPtrSize);
// memset((void *)iv,0x0,(size_t)sizeof(iv));


// NSString * initVec = @init Vec;
const void * vkey =(const void *)[key UTF8String];
const void * vinitVec =(const void *)[key UTF8String];

ccStatus = CCCrypt(kCCEncrypt,
kCCAlgorithmDES,
kCCModeCBC,
vkey,//123456789012345678901234,//键
kCCKeySizeDES,
vinitVec,// vinitVec,//init Vec,// iv,
vplainText,//Your Name,// plainText,
plainTextBufferSize,
(void *)bufferPtr ,
bufferPtrSize,
movedBytes);

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

result = [myData base64encoding;

crypt_result.text = myData;


解决方案

这是工作代码:

  NSString * key = @abc43HU0; 
NSString * token = @hellohello;

const void * vplainText;
size_t plainTextBufferSize = [token length];
vplainText =(const void *)[token UTF8String];
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);

Byte iv [] = {0x65,0x110,0x68,0x26,0x69,0x178,0x200,0x219};

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

ccStatus = CCCrypt(kCCEncrypt,
kCCAlgorithmDES,
kCCOptionPKCS7Padding,
vkey,
kCCKeySizeDES,
iv,
vplainText,
plainTextBufferSize,
(void *)bufferPtr,
bufferPtrSize,
& movedBytes);

NSData * myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];
NSString * result = [base64 base64EncodeData:myData]; //我自己的使用base64编码的方法


hi guys i'm pretty new in obj-c world and i would like know how can I encrypt a string in des? I already tried search but could not find any sample code that could help me the only thing I realized is that there is a class commonCrypt to do what I want but I do not know how to use it

my code

NSString* key = @"abc43HU0";
NSString *token = @"hellohello";


const void *vplainText;
size_t plainTextBufferSize;

plainTextBufferSize = [token length];
vplainText = (const void *) [token UTF8String];

CCCryptorStatus ccStatus;
uint8_t *bufferPtr = NULL;
size_t bufferPtrSize = 0;
size_t *movedBytes = NULL;

bufferPtrSize = (plainTextBufferSize + kCCBlockSize3DES) & ~(kCCBlockSize3DES - 1);
bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));
memset((void *)bufferPtr, 0x0, bufferPtrSize);
// memset((void *) iv, 0x0, (size_t) sizeof(iv));


//NSString *initVec = @"init Vec";
const void *vkey = (const void *) [key UTF8String];
const void *vinitVec = (const void *) [key UTF8String];

ccStatus = CCCrypt(kCCEncrypt,
                   kCCAlgorithmDES,
                   kCCModeCBC,
                   vkey, //"123456789012345678901234", //key
                   kCCKeySizeDES,
                   vinitVec,// vinitVec, //"init Vec", //iv,
                   vplainText, //"Your Name", //plainText,
                   plainTextBufferSize,
                   (void *)bufferPtr,
                   bufferPtrSize,
                   movedBytes);

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

result = [myData base64encoding;

crypt_result.text = myData;

解决方案

this is the working code:

NSString* key = @"abc43HU0";
NSString *token = @"hellohello";

const void *vplainText;
size_t plainTextBufferSize = [token length];
vplainText = (const void *) [token UTF8String];    
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);

Byte iv [] = {0x65, 0x110, 0x68, 0x26, 0x69, 0x178, 0x200, 0x219};

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

ccStatus = CCCrypt(kCCEncrypt,
                   kCCAlgorithmDES,
                   kCCOptionPKCS7Padding,
                   vkey, 
                   kCCKeySizeDES,
                   iv,
                   vplainText,
                   plainTextBufferSize,
                   (void *)bufferPtr,
                   bufferPtrSize,
                   &movedBytes);

NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];
NSString* result = [base64 base64EncodeData:myData];//my own method to encoding with base64

这篇关于使用des cbc模式加密/解密字符串obj-c的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆