gpt4 book ai didi

ios - objective-c 的DES加密

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:55 26 4
gpt4 key购买 nike

我正在尝试使用 DES 算法对 objective-c 中的数据进行加密。这是我的代码。我正在从这段代码中获取我的数据 :<> 和加密的 str: 。谁能说出什么问题了?

    NSString *token = @"hello world";
const void *vplainText;
size_t plainTextBufferSize;

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

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

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

NSString *key = [[NSString alloc] initWithString:@"12345678"];
const void *vkey = (const void *) [key UTF8String];
CCCryptorStatus cryptStatus =CCCrypt(
kCCEncrypt, /* kCCEncrypt, etc. */
kCCAlgorithmDES, /* kCCAlgorithmAES128, etc. */
kCCOptionPKCS7Padding | kCCOptionECBMode, /*kCCOptionPKCS7Padding, etc. */
vkey,
kCCKeySizeDES,
NULL, /* optional initialization vector */
vplainText, /* optional per op and alg */
plainTextBufferSize,
(void *)bufferPtr, /* data RETURNED here */
bufferPtrSize,
movedBytes);

NSString *result;

NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];
NSLog(@"my data :%@",myData);


result = [self base64Encoding:myData];
NSLog(@"enrypted str: %@",result);

最佳答案

示例代码...

- (void) testDES
{
NSData * data = [OpenSSLProxy getRandomBytes:20]; // generate some random bytes
NSData * key = [OpenSSLProxy getRandomBytes:kCCKeySizeDES];
NSData * enc = [self encryptDESByKey:key data:data];
NSData *dec = [self decryptDESByKey:key data:enc];
STAssertEqualObjects(data, dec, @"");
}

- (NSData *)encryptDESByKey:(NSData *)key data:(NSData *)data
{
size_t numBytesEncrypted = 0;
size_t bufferSize = data.length + kCCBlockSizeDES;
void *buffer = malloc(bufferSize);

CCCryptorStatus result = CCCrypt( kCCEncrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding,
key.bytes, kCCKeySizeDES,
NULL,
data.bytes, data.length,
buffer, bufferSize,
&numBytesEncrypted);
NSData *output = [NSData dataWithBytes:buffer length:numBytesEncrypted];
free(buffer);
if( result == kCCSuccess )
{
return output;
} else {
NSLog(@"Failed DES encrypt...");
return nil;
}
}

- (NSData *) decryptDESByKey:(NSData *)key data:(NSData *)data
{
size_t numBytesEncrypted = 0;

size_t bufferSize = data.length + kCCBlockSizeDES;
void *buffer_decrypt = malloc(bufferSize);
CCCryptorStatus result = CCCrypt( kCCDecrypt , kCCAlgorithmDES, kCCOptionPKCS7Padding,
key.bytes, kCCKeySizeDES,
NULL,
data.bytes, data.length,
buffer_decrypt, bufferSize,
&numBytesEncrypted );

NSData *output = [NSData dataWithBytes:buffer_decrypt length:numBytesEncrypted];
free(buffer_decrypt);
if( result == kCCSuccess )
{
return output;
} else {
NSLog(@"Failed DES decrypt ...");
return nil;
}
}

关于ios - objective-c 的DES加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15640104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com