objective-c - 使用 des cbc 模式 obj-c 加密/解密字符串

标签 objective-c ios encryption des

大家好,我是 obj-c 世界的新手,我想知道如何在 des 中加密字符串?我已经尝试过搜索,但找不到任何可以帮助我的示例代码,我唯一意识到的是有一个类 commonCrypt 可以做我想做的事,但我不知道如何使用它

我的代码

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;

最佳答案

这是工作代码:

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

关于objective-c - 使用 des cbc 模式 obj-c 加密/解密字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11375909/

相关文章:

iphone - 我的 iOS 应用程序中的奇怪键盘行为

ios - 从Parse.com流音频-没有检索到数据?

ios - 未找到 GoogleOpenSource/GoogleOpenSource.h 文件

ios - 在 rake build 期间安装 ios-sim 1.9.0 在预安装时失败

php - 使用 openssl 解密 mcrypt

c# - 在 C# 中序列化、压缩和加密

objective-c - 对包含 2 种对象的 NSmutableArray 进行排序?

ios - 如何清除 WKWebView 的 WKBackForwardList?

ios - 使用 textViewDidChange 限制 UITextView 中的字符

c# - 使用 RSA/ECB/PKCS1Padding 的 .Net 加密和 java 解密