詳細な手順のコードのコメントを参照してください。
輸入java.security.KeyFactory。 輸入java.security.KeyPair。 輸入java.security.KeyPairGenerator。 輸入java.security.PrivateKey; 輸入java.security.PublicKey。 輸入java.security.spec.PKCS8EncodedKeySpec; 輸入java.security.spec.X509EncodedKeySpec; 輸入javax.crypto.Cipher; 輸入org.apache.commons.codec.binary.Base64。 パブリック クラスResUtils { 公共 静的 ボイドメイン(文字列[]引数)がスロー例外{ / * *非对称加密说明 * *一般的に公開鍵は、秘密鍵がプライベートであります *データは、公開鍵が唯一の秘密鍵データを復号化することができます使用して暗号化 *データは秘密鍵を使って暗号化された唯一の公共データを復号化することができます * * / KeyPairGeneratorのkeygenの = KeyPairGenerator.getInstance(「RSA」); // するKeyPairGeneratorオブジェクトを生成します非対称公開鍵と秘密鍵暗号、RSA非対称暗号化アルゴリズムの選択 keyGen.initialize(2048); // キーは、2048初期化 キーペアキーペアkeyGen.generateKeyPair =(); // キーのペアを生成する のPublicKey公開鍵ペア= .getPublicは(); // オブジェクトの公開鍵を取得する のPrivateKeyのPrivateKey keyPair.getPrivate =(); //入手した秘密鍵オブジェクトの pubkeyでBase64.encodeBase64String =文字列(publicKey.getEncoded()); // 公開鍵エンコードされた文字列を取得する 文字列prikey = Base64.encodeBase64String(privateKey.getEncodedを()); // エンコードされた秘密キー文字列 のSystem.out。 println(pubkeyで); System.out.printlnは(prikey); // 公開鍵文字列オブジェクトへの公開鍵の削減 バイト [] = pubKeyb Base64.decodeBase64(pubkeyで); // エンコードさキーの文字列 X509EncodedKeySpec x509KeySpec = 新しい新しい X509EncodedKeySpec (pubKeyb); //は、公開鍵エンコードされた文字列に基づいて公開鍵マテリアルを作成しますか? KeyFactoryに= KeyFactory.getInstanceするKeyFactory( "RSA"); // RSAアルゴリズムの植物を使用してキー PubKeyr = keyFactory.generatePublicのPublicKey(x509KeySpec); // キー材料公開鍵ファクトリオブジェクトを使用して公開鍵を生成する // プライベートキーオブジェクトプライベート文字列復元 バイト [] = priKeyb Base64.decodeBase64(prikeyを); // 符号化プライベート文字列の あるPKCS8EncodedKeySpec pkcs8KeySpec = 新しい新しいあるPKCS8EncodedKeySpec(priKeyb); //を秘密鍵エンコードされた文字列に合わせてプライベートキーマテリアルを作成しますか? PriKeyr = keyFactory.generatePrivateのPrivateKey(pkcs8KeySpec); // プライベート鍵オブジェクトを生成した秘密鍵を使用してキー植物材料 // (公開鍵暗号を使用してオブジェクト)、暗号化されたデータを 文字列データ =「データのデータ」; // データを暗号化します Cipher.getInstance暗号=暗号化(「RSA」); // データオブジェクトを暗号化または復号化するための暗号、RSAアルゴリズムは、暗号化または復号化するために選択された cipher.init(Cipher.ENCRYPT_MODE、pubKeyrを); // 暗号の暗号化モードENCRYPT_MODEが選択されたオブジェクト、および公開鍵暗号化対象使用 バイト [] = encData Cipher.doFinal(data.getBytes( "UTF8")); // 暗号オブジェクトは、暗号化データ生成 列= encdatas Base64.encodeBase64String(encDataを); // 取得した暗号化されたデータ列をコード System.out.println(encdatas); //は、データを復号化(オブジェクトを解読するための秘密鍵を使用して) cipher.init(Cipher.PRIVATE_KEY、priKeyr); // 暗号PRIVATE_KEY復号モードは、オブジェクトを選択し、解読するための秘密鍵を使用してオブジェクト のバイトを[] = Cipher.doFinal DecData(Base64.decodeBase64(encdatas)); // 暗号化されたデータと復号化されたデータをデコードする 文字列を= decdatas 新しい新しい文字列(DecData、 "UTF8を"); // 文字列の復号化されたデータ取得 のSystem.outを。 println(decdatas); } }
(終わり)