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;
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にしろってこと?
めんどい・・・。