ホームページ  >  記事  >  バックエンド開発  >  iOS および PHP/Android AES128 ECB NoPadding 暗号化

iOS および PHP/Android AES128 ECB NoPadding 暗号化

WBOY
WBOYオリジナル
2016-06-20 12:39:011443ブラウズ

出典: http://www.henishuo.com/ios-aes128-ecb-nopadding/

はしがき

話しましょうインターネット上にはさまざまなバージョンの AES 暗号化があり、暗号化のセキュリティの問題についてあまり考えていなかったときは、Baidu がリリースした特定の AES 暗号化アルゴリズムを直接使用できるのではないかと考えていました。多くの落とし穴に遭遇しましたが、それは単に持ち込んで使用するだけではないことがわかりました。この記事を書いて、あなたが遭遇した落とし穴を記録し、今後同じ落とし穴が再び起こらないようにしてください。

AES ルール

元の入力データが 16 バイトの整数に足りない場合は、埋める必要があります。したがって、異なるパディングが使用されると、暗号化の結果も異なります。

AES 暗号化アルゴリズム

Apple が提供する API には、暗号化または復号化のための次の機能のみがあります:

 CCCryptorStatus CCCrypt(    CCOperation op,        /* kCCEncrypt, etc. */    CCAlgorithm alg,        /* kCCAlgorithmAES128, etc. */    CCOptions options,      /* kCCOptionPKCS7Padding, etc. */    const void *key,    size_tkeyLength,    const void *iv,        /* optional initialization vector */    const void *dataIn,    /* optional per op and alg */    size_tdataInLength,    void *dataOut,          /* data RETURNED here */    size_tdataOutAvailable,    size_t*dataOutMoved)    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0); 

  • ここで、最初のCCOperation には、暗号化用の kCCEncrypt または復号化用の kCCDecrypt の 2 つの値しかありません。
  • 2 番目のパラメータは暗号化アルゴリズムを表します。暗号化アルゴリズムには次のタイプのみがあります。

 enum {    kCCAlgorithmAES128 = 0,    kCCAlgorithmAES = 0,    kCCAlgorithmDES,    kCCAlgorithm3DES,          kCCAlgorithmCAST,          kCCAlgorithmRC4,    kCCAlgorithmRC2,      kCCAlgorithmBlowfish    };typedef uint32_tCCAlgorithm; 

ここで使用するのは kCCAlgorithmAES128 で、これは AES128 を使用することを意味します。ビット暗号化。

  • 3 番目のパラメーターはオプションを表します。ここで使用される kCCOptionECBMode は ECB を表します。

 enum {    /* options for block ciphers */    kCCOptionPKCS7Padding  = 0x0001,    kCCOptionECBMode        = 0x0002    /* stream ciphers currently have no options */};typedef uint32_tCCOptions; 

  • 4 番目のパラメーターは暗号化を表します。 /復号化キー。
  • 5 番目のパラメーター keyLength はキーの長さを表します。
  • 6 番目のパラメータ iv は固定値であり、キーを使用して直接使用できます。 Android、サーバー、iOS が統一されていない場合は、復号化によって解決できる可能性がありますが、復号化後の最後に問題が発生する可能性があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。