3

著作権で保護されたPDFファイルを使用するiOSアプリケーションに取り組んでいます。私は、セキュリティのためにファイルを難読化する簡単な方法を探しています。これにより、追加のマスマーケットCCATS暗号化レビュープロセスを実行する必要がなくなりますが、データの安全性を維持するために少しずつ著作権所有者を確保することもできます。もちろん私はファイルをパスワードで保護しますが、それをさらに1、2ステップ進めたいと思います。サーバーでホストするPDFファイルをXORまたはハッシュまたは難読化する簡単な方法はありますか?次に、iOSデバイスにダウンロードさせ、objective-cコードを使用して通常のパスワードで保護されたPDFファイルに復元して保存できるようにしますそれはdocumentsディレクトリにあります(サーバー上にあるときほど、デバイス上のセキュリティについては心配していません)。これはどのファイルタイプでも同じだと思います。

したがって、明確にするために、ダウンロード後にiosデバイスがファイルをすばやくデコードしてドキュメントディレクトリに保存するために使用できる、対応するObjectiveCコードを備えた単純なXORまたはハッシュ難読化/暗号化メソッドをデスクトップで探しています。

本当にありがとう!

参照用のCCATSの制限に関する回答は次のとおりです... 単純なXOR暗号を使用している場合は、CCATSを申請する必要がありますか?

4

1 に答える 1

6

ただし、ファイルをダウンロードしていますが、おそらくNSData? もしそうなら、おそらく次のようなものがある場所ならどこでも:

[myData writeToFile:...]

すべてのバイトをダッシュ​​して、XOR を適用するだけです。高密度の 8 ビット パターンであると仮定すると、次のようになります。

/* assuming myData is mutable... take [data mutableCopy] if required */
uint8_t *bytes = (uint8_t *)[myData mutableBytes];

for(int index = 0; index < [myData length]; index++)
    bytes[index] ^= 0xe8; // or whatever your mask is

これは、より長いパターンを適用する最も簡単な方法を示唆しています:

uint8_t *bytes = (uint8_t *)[myData mutableBytes];
uint8_t pattern[] = {0xe8, 0xf4, 0x98, 0x32, 0x63}; // or whatever
const int patternLengthInBytes = 5;

for(int index = 0; index < [myData length]; index++)
    bytes[index] ^= pattern[index % patternLengthInBytes];

32ビットステップで進める方が少し速いでしょうが、ディスクへの保存はおそらくかなりの種類のコストがかかる唯一のものであり、それは少なくとも非常に明確です.

于 2012-05-18T17:10:30.380 に答える