JavaのRSAの暗号化と復号化

パッケージcom.rsa。

輸入java.security.KeyFactory。
輸入java.security.KeyPair。
輸入java.security.KeyPairGenerator。
輸入java.security.NoSuchAlgorithmException。
インポートにjava.security.SecureRandom; 
輸入java.security.interfaces.RSAPrivateKey。
輸入java.security.interfaces.RSAPublicKey。
輸入java.security.spec.PKCS8EncodedKeySpec; 
輸入java.security.spec.X509EncodedKeySpec; 
輸入java.util.HashMapを; 
輸入java.util.Map; 

輸入javax.crypto.Cipher; 

輸入org.apache.commons.codec.binary.Base64。

パブリッククラスTest { 

	プライベート静的地図<整数、文字列>キーマップ=新しいHashMapの<整数、文字列>();

	静的な無効メインパブリック(文字列[]引数)は例外{スロー
		// TODO自動生成されたメソッドスタブ

		ランダムに生成された公開鍵と秘密鍵のために包装// 
		{//は、公開鍵と秘密鍵の生成
			、genKeyPairを()
			//暗号化を文字列の
			文字列メッセージ= "df723820"; 
			System.out.printlnは( "ランダムに生成された公開鍵:" + keyMap.get(0)); 
			System.out.printlnは( "ランダムに生成された秘密鍵:" +キーマップ(1)に.get); 
			文字列= messageEn暗号化(メッセージ、keyMap.get(0)); 
			のSystem.out.println(メッセージ+ "暗号化された文字列の\ tはである:" + messageEn); 
			文字列= messageDe解読( messageEn、keyMap.get)(1)
			のSystem.out.println( "文字列に還元:" + messageDe)。
		} 
	} 

	パブリック静的ボイドgenKeyPair(){//は、RSAアルゴリズム生成物に基づいて公開鍵と秘密鍵を生成するため持つNoSuchAlgorithmExceptionするKeyPairGeneratorクラスをスロー
		KeyPairGen = KeyPairGenerator.getInstanceするKeyPairGenerator( "RSA");
		//は、鍵ペアジェネレータ、96から1024ビットのキーサイズを初期化します
		keyPairGen.initialize(1024、新しい新規のSecureRandom()); 
		//鍵ペアに格納された鍵ペア生成
		;キーペアキーペアkeyPairGen.generateKeyPair =()
		RSAPrivateKeyザのPrivateKey =(RSAPrivateKeyザ)keyPair.getPrivateを(); 
		//秘密鍵
		公開=のRSAPublicKey(のRSAPublicKey)keyPair.getPublic(); 
		//公衆取得
		新しい新しい文字列をpublicKeyString =文字列を(Base64.encodeBase64(publicKey.getEncoded())); 
		//取得プライベート文字列の
		文字列privateKeyString =新しい文字列(Base64で。 encodeBase64は((privateKey.getEncodedは()))); 
		//に公開鍵と秘密鍵の保存
		keyMap.put(0、publicKeyString); 
		// 0は、公開鍵を表す
		。keyMap.put(1、privateKeyString); 
		// 1を表し、プライベート
	}

	パブリック静的文字列の暗号化(文字列str、文字列公開)をスロー例外{ 
		// BASE64编码的公钥
		バイト[] = Base64.decodeBase64(公開)デコード; 
		RSAPublicKey pubkeyで=(のRSAPublicKey)KeyFactory.getInstance( "RSA")
				.generatePublic(新しいX509EncodedKeySpec(復号))。
		// RSA加密
		暗号暗号= Cipher.getInstance( "RSA"); 
		cipher.init(Cipher.ENCRYPT_MODE、pubkeyで)。
		ストリングoutStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes( "UTF-8")))。
		outStr返します。
	} 

	パブリック静的文字列の復号化は、(文字列strは、文字列のPrivateKey)をスロー例外{ 
		// 64位解码加密后的字符串
		バイト[] inputByte = Base64.decodeBase64(str.getBytes( "UTF-8"));
		バイト[] = Base64.decodeBase64(のPrivateKey)デコード; 
		RSAPrivateKey priKey =(RSAPrivateKey)KeyFactory.getInstance( "RSA")
				.generatePrivate(新しいあるPKCS8EncodedKeySpec(復号))。
		// RSA解密
		暗号暗号= Cipher.getInstance( "RSA"); 
		cipher.init(Cipher.DECRYPT_MODE、priKey)。
		文字列outStr =新しいString(cipher.doFinal(inputByte)); 
		outStr返します。
	} 

}

  

おすすめ

転載: www.cnblogs.com/libing029/p/11128082.html