一人でできるもん(涙

企画、アプリ設計・制作、サーバ構築、DB設計、サーバサイドプログラム、デザインまで一人でやらされてる都合のいいひr(yu

Crypt::CBCでencryptしたものをFBEncryptorAESでdecryptできない

原因判明

 

encode_base64で第二引数なくて、改行はいってただけだった。

  my $encdata64 = encode_base64($encdata,'');

これで解決。

2byte文字いれたときにできなかったから、そっちが原因だとおもったのに

単純に2byte文字はいったせいで全長が64byteを超えてただけだという・・・。

ややこしーわwwwww 

======以下原文================================================

サーバ側

 my $data = { name => 'ほげほげ'};

 my $jsondata = encode_json($data);

 

 my $c = Crypt::CBC->new(

  -key => $key,

  -literal_key => 1,

  -cipher => 'Crypt::OpenSSL::AES',

  -header => 'none',

  -iv => pack( "C*" , map {0x00} 1 .. 16 ),

 );

 

 my $encdata = $c->encrypt($jsondata);

 my $encdata64 = encode_base64($encdata);

 

 print "content-type:application/json¥n¥n";

 print $encdata64; 

 

Objective-c

 NSURLRequest *request = [NSURLRequest requestWithURL:url];

 NSURLResponse *response = nil;

 NSError *error = nil;

 //get BASE64 data

 NSData *data = [NSURLConnection

  sendSynchronousRequest:request

  returningResponse:&response

  error:&error];

 if(error)NSLog(@"error = %@", error);

 //decode AES BASE64

 NSString *jsonStr = [FBEncryptorAES

  decryptBase64String:[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]

  keyString:KEY];

 

 

 

これでなぜか

[ERROR] failed to decrypt| CCCryptoStatus: -4304

になる。

 

 my $data = { name => 'hogehoge'};

だとちゃんといく。

 

2byte文字あるといかないとかどういうことですかね。

jsonでまとめたあとにbase64してからencryptしてまたbase64にしろってこと?

 

めんどい・・・。