2016-08-28 7 views

答えて

2

セキュリティとCommonCryptoは低レベルのフレームワークです。それらは完全な暗号化されたデータ形式ではなく、セキュリティプリミティブのみを提供します。プリミティブから安全なフォーマットを構築するのは難しいことであり、オンラインで見つけるほとんどの例は安全ではありません。作者は安全なフォーマットを作る方法を知らなかったか、作者はあなたが書いたものをとって安全なフォーマットを作る方法を知っていることを前提としています。

"文字列を復号化する"というようなことは、おそらく意味がありません。すべての暗号化関数は生のバイトを生成します。文字列が必要な場合は、base64または16進数などに変換します。いくつかのライブラリは自動的にこれを追加しますが、しばしばdouble-base64でエンコードされたデータのような奇妙なアーティファクトにつながります。

クロスプラットフォームの「既定の」暗号化形式を使用する場合は、RNCryptorまたはlibSodiumを参照してください。どちらもデータとデータを変換します。文字列が必要な場合は、好きなように(通常はbase64または16進数で)データをエンコードおよびデコードします。

+1

Format Preserving EncryptionやFPEなどがあることに注意してください。一般に、バイトにエンコードしてから、必要に応じて上記の答えのように、暗号文を文字列にエンコードする方が簡単です。 FPEをサポートするライブラリは不足しているようです。 –

+0

上記の答えでバイナリ平文を生成するために必要な*文字エンコーディング*(例:UTF-8)が多少欠けています。現在は、暗号文の符号化についてのみ述べています。 –

+1

実装を見つけることはまれではありませんが、特に一般的なケースでは、FPEを安全にすることはさらに困難です。あまり注意を払わないと(そしてあなたがしばしばであっても)、取引のセキュリティを互換性を失わせることができます。しかし、はい、そんなことがあります。 –

関連する問題