簡體   English   中英

iOS使用des ecb解密base64編碼的字符串

[英]ios decrypt base64 encoded string using des ecb

我正在嘗試解密一個字符串,該字符串首先在ecb模式下使用des加密,然后在base64中編碼。

這是我的代碼:

+ (NSString *)decrypt:(NSString *)encryptedText
{
    NSString *key = @"12345678";
    NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:encryptedText options:0];
    size_t numBytesDecrypted = 0;
    size_t bufferSize = [decodedData length] + kCCBlockSizeDES;
    void *buffer = malloc(bufferSize);
    char keyPtr[kCCKeySizeDES+1]; // room for terminator (unused)
    bzero(keyPtr, sizeof(keyPtr));
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];


    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
                                      kCCAlgorithmDES,
                                      kCCOptionPKCS7Padding | kCCOptionECBMode,
                                      keyPtr,
                                      kCCKeySizeAES256,
                                      NULL /* initialization vector (optional) */,
                                      [decodedData bytes], [decodedData length], /* input */
                                      buffer,       bufferSize, /* output */
                                      &numBytesDecrypted);

    NSData *val = [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
    return [[NSString alloc] initWithData:val encoding:NSUTF8StringEncoding];
}

但是我得到一個零字符串作為回報...任何想法嗎?

您正在使用DES,但在對以下kCCKeySizeAES256的調用中將密鑰大小指定為: kCCKeySizeAES256CCCrypt

從安全的角度來看,此代碼有很多錯誤,請勿在實際應用中使用。 這不再是最佳實踐。 除其他事項外,應使用基於密碼的密鑰派生功能(例如PBKDF2)將密碼轉換為密鑰。 另外,使用DES和ECB模式也是一個弱點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM