前の質問に基づいて、データベースのレコード ID として連続する整数を使用しています。Skip32 を使用して整数 ID を難読化したい。Java 実装を見つけましたが、標準の JCE API を使用してそれを初期化する方法がわかりません。整数を暗号化し、必要に応じて復号化する必要があります。誰でもこの例を見せてもらえますか?
2 に答える
あなたが見つけたコードはCryptix プロジェクトに属しています。この 1 つのファイルだけでなく、パッケージ全体を取得する必要があります。JCE パッケージを取得し、プロバイダーとしてインストールします。次に、使用できるはずです
Cipher c = Cipher.getInstance("SKIPJACK");
しかし実際には、Cryptix のようなサポートされていないライブラリを使用する代わりに、BouncyCastleライブラリ (またはその一部) を使用することをお勧めします。多くのドキュメントとSkipJack-implementationもあります。
ただし、ブロックサイズが小さいためだけに、JREに付属の暗号の代わりにSkipjackを使用する必要がある理由はわかりませんか?
私が正しく理解している場合、Skip32 は別の暗号 (4 バイト ブロックで動作) であり、Skipjack (8 バイト ブロックで動作) のような同様の原則によって構築されています。私はその仕様を見つけられず、C と Perl のソース コードしか見つからなかったので、利用可能な Java 実装があるとは思えません。ウィキペディアの Format-preserving encryptionをご覧ください。または、従来のブロックサイズの強力なブロック暗号が与えられた場合、小さなブロックサイズで強力なブロック暗号を作成できますか? Cryptography Stack Exchange で、より大きなブロックの暗号から小さなブロックの暗号を構築する他の方法を示しています。
ブロック暗号を使用した安全な順列に関するこのブログ投稿は、実装方法を理解するのに役立ちます。ブロックサイズが十分に短いブロック暗号であれば十分です。