5

CCCryptメソッドを使用しています。

128bit よりも長いキーを使用できますか? 任意の長さにできますか?それとも128の倍数?

もしそうなら、どうすればいいですか?

これが可能だとは思いませんでしたが、次のテキストを見つけました: here

AES や RSA などの一部のアルゴリズムでは、さまざまな長さのキーを使用できますが、DES や 3DES などの固定されたアルゴリズムもあります。一般に、より長いキーを使用した暗号化は、メッセージの復元に対する抵抗力が強いことを意味します。いつものように、セキュリティと時間の間にはトレードオフがあるため、適切なキーの長さを選択してください。

AES はどのようにして異なる長さを許可するのですか? 128 を超えるビットは無視されますか?

この上で髪を伸ばしています。

4

2 に答える 2

7

AES(Advanced Encryption Standard)は、実際には3つの関連するブロック暗号アルゴリズム(または、暗号化と復号化を個別にカウントする場合はアルゴリズムのペア)のコレクションです。それらはすべて128ビットブロック(16バイト)で動作します。

最も一般的に使用されるのはAES-128で、これは128ビットのキー(つまり16バイト)を取ります。AES-192は192ビットキー(24バイト)を取り、AES-256は256ビットキー(32バイト)を取ります。

これらの3つのアルゴリズムは似ていますが、それでも異なる方法で機能します(また、長いキーのアルゴリズムは、内部の混乱操作の「ラウンド」が増えるため、少し時間がかかります。したがって、キーのすべてのビットが暗号文のすべてのビットに何らかの影響を与える可能性があります。 )。したがって、これらすべてのアルゴリズムのこれらすべてのキーは、暗号化と復号化が異なります(つまり、AES-128キーと同じことを行うAES-256キーはありません)。

とはいえ、残念ながら、CommonCryptoライブラリがAESのすべてのバリアントをサポートしているかどうか、サポートしている場合は(私が思うに)正しいものを選択する方法がわかりません。

于 2011-10-14T23:38:05.450 に答える
5

パウロの説明は素晴らしいです!そして、この主題に関するAppleのドキュメントよりもはるかに優れています;-)

この知識をiOSのコンテキストに置くには、cccrypt(manページで名前が付けられているような)がWebサイトの他の場所でCommonCrypto(検索を容易にする)と呼ばれることが多いことを知っておく必要があります

しかし、この部分がオープンソースソフトウェアであり、実際にドキュメントが不足していることに気付くまで、多くを見つけることはできません。

しかし、これを見つけたら、ソースコードを検索してCommonCrypto.h見つけ、使用できる列挙型を見つけることができます。これには、kCCKeySizeAES128、kCCKeySizeAES192、およびkCCKeySizeAES256が含まれます。したがって iOSAES256ビットキーを使用できます。

于 2011-10-15T02:42:06.860 に答える