0

以下のコードで、Objective-c でいくつかのデータを暗号化しています。

NSDictionary *jsonDic = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"key1", @"2", @"key2", nil]; 
SBJsonWriter *jsonWriter = [[SBJsonWriter alloc] init];
NSData *data = [jsonWriter dataWithObject:jsonDic];
[jsonWriter release];

NSString *key = @"mykey";   
const int len = [data length]*2 + 2048;
char* buffer = (char*)malloc(len);
memset(buffer, 0, len);
const char *iv = "12345";
size_t dataOut = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, 
                                      kCCAlgorithmDES,
                                      kCCOptionPKCS7Padding,
                                      [key UTF8String], 
                                      kCCKeySizeDES,
                                      iv, 
                                      [data bytes],
                                      [data length],
                                      buffer, 
                                      len,
                                      &dataOut);

NSData* retData = nil;
if(cryptStatus == kCCSuccess) {
    retData = [NSData dataWithBytes:buffer length:dataOut];
}

free(buffer);
return destData;

次に、以下のコード ポストを php api に呼び出します

NSString *urlString = @"http://domain/api.php";
NSMutableURLRequest *urlPost = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20];
[urlPost setHTTPMethod:@"POST"];
[urlPost setHTTPBody:data];
NSURLConnection *urlConnection = [NSURLConnection connectionWithRequest:urlPost delegate:self];

以下のphpコードを使用して、投稿を読み取り、復号化します。

define("KEY","mykey");
define("IV","12345");

$post_body = file_get_contents('php://input');
$dec_str   = mcrypt_decrypt(MCRYPT_DES, KEY, $post_body, MCRYPT_MODE_BCB, IV);
error_log($dec_str);

しかし、私は正しい結果を見ることができません。1 日 1 晩検索して試してみましたが、まだ何が問題なのかわかりません。よろしくお願いします!

4

1 に答える 1

1

この電話があります:

CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, 
                                      kCCAlgorithmDES,
                                      kCCOptionPKCS7Padding,
                                      [keyString UTF8String], 
                                      kCCKeySizeDES,
                                      iv, 
                                      [data bytes],
                                      [data length],
                                      buffer, 
                                      len,
                                      &dataOut);

keyStringそこにある変数は何ですか?私はあなたがそこに書くべきだと思います[key UTF8String];)

于 2013-01-05T07:42:17.993 に答える