0

私は Parse を使用して iOS アプリに取り組んでおり、Ruby を使用して Web サイトとそのために構築しているブラウザー拡張機能を使用して暗号化フローをシミュレートする必要があります。

のソルトを生成するためAESに、iOS アプリに次のコードがあります。

NSString *str            =    user.email;
NSData *strData          =    [str dataUsingEncoding: NSUTF8StringEncoding];
NSData *encryptedData    =    [strData AESEncryptWithPassphrase:str]; // using the same key

私を困惑させているのは dataUsingEncoding: ですNSUTF8StringEncoding-- 明らかに文字列を UTF-8 でエンコードしていますが、NSLog で見るとかなり異なっているように見えます。したがって、str が "randomemail@gmail.com" の場合、NSLogstrData 出力に対して次のように実行します。

<72616e64 6f6d656d 61696c40 676d6169 6c2e636f 6d>

では、Ruby で同じ出力を得るにはどうすればよいでしょうか。このため、正しいソルトを取得できません ("randomemail@gmail.com".encode("UTF-8") は、期待どおりにメールを返すだけです)。Ruby で dataUsingEncoding をシミュレートして、まったく同じソルトを取得するにはどうすればよいですか?

ありがとう

4

1 に答える 1

3

これを試して:

"randomemail@gmail.com".encode("UTF-8").bytes.to_a.map{ |x| x.to_s(16)}

そして、あなたはあなたが望むものを「見る」でしょう。

「randomemail@gmail.com」の UTF-8 エンコーディングによる 16 進数表現は、

<72616e64 6f6d656d 61696c40 676d6169 6c2e636f 6d>

しかし、ruby は文字列表現である "randomemail@gmail.com" を表示します。彼らは同じものをさまざまな方法で示しています。

詳しくはこちらをご覧ください。

于 2012-10-19T05:46:54.217 に答える