iOS および PHP/Android AES128 ECB NoPadding 暗号化
出典: 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 が統一されていない場合は、復号化によって解決できる可能性がありますが、復号化後の最後に問題が発生する可能性があります。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
