標籤:tracking tor assets pack bind sys collect fork jpg
Java密碼編譯演算法 RSA2015-06-06 08:44 511人閱讀 評論(0) 收藏 舉報 分類:JAVA(57)
公開金鑰加密也稱為非對稱式加密、速度慢、加密和解密的鑰匙不相同,某一個人持有私密金鑰,任何人都可以知道公開金鑰
[java] view plaincopy
- package com.stone.security;
-
- import java.security.KeyPair;
- import java.security.KeyPairGenerator;
- import java.security.PrivateKey;
- import java.security.PublicKey;
- import java.util.Arrays;
-
- import javax.crypto.Cipher;
-
- /**
- * RSA演算法 公開金鑰加密 非對稱式加密
- * @author stone
- * @date 2014-03-11 00:28:38
- */
- public class RSA {
- public static final String KEY_ALGORITHM = "RSA";
- public static final String CIPHER_ALGORITHM_ECB1 = "RSA/ECB/PKCS1Padding";
- public static final String CIPHER_ALGORITHM_ECB2 = "RSA/ECB/OAEPWithSHA-1AndMGF1Padding"; //不能用
- public static final String CIPHER_ALGORITHM_ECB3 = "OAEPWithSHA-256AndMGF1Padding"; //不能用
-
- static PublicKey publicKey;
- static PrivateKey privateKey;
- static Cipher cipher;
- static KeyPair keyPair;
-
- public static void main(String[] args) throws Exception {
- method1("斯柯達U*(Sfsad7f()*^%%$");
- method2("斯柯達U*(Sfsad7f()*^%%$");
- method3("斯柯達U*(Sfsad7f()*^%%$");
-
- }
-
- /**
- * 公開金鑰加密,私密金鑰解密 使用預設CIPHER_ALGORITHM_ECB1
- * @param str
- * @throws Exception
- */
- static void method1(String str) throws Exception {
- KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
- KeyPair keyPair = keyGenerator.generateKeyPair();
- publicKey = keyPair.getPublic();
- privateKey = keyPair.getPrivate();
- cipher = Cipher.getInstance(KEY_ALGORITHM);
- cipher.init(Cipher.ENCRYPT_MODE, publicKey); //公開金鑰加密
- byte[] encrypt = cipher.doFinal(str.getBytes());
- System.out.println("公開金鑰加密後1:" + Arrays.toString(encrypt));
-
- cipher.init(Cipher.DECRYPT_MODE, privateKey);//私密金鑰解密
- byte[] decrypt = cipher.doFinal(encrypt);
- System.out.println("私密金鑰解密後1:" + new String(decrypt));
- }
-
- /**
- * 私密金鑰加密,公開金鑰解密 使用預設CIPHER_ALGORITHM_ECB1
- * @param str
- * @throws Exception
- */
- static void method2(String str) throws Exception {
- KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
- KeyPair keyPair = keyGenerator.generateKeyPair();
- publicKey = keyPair.getPublic();
- privateKey = keyPair.getPrivate();
- cipher = Cipher.getInstance(KEY_ALGORITHM);
- cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私密金鑰加密
- byte[] encrypt = cipher.doFinal(str.getBytes());
- System.out.println("私密金鑰加密後2:" + Arrays.toString(encrypt));
-
- cipher.init(Cipher.DECRYPT_MODE, publicKey);//公開金鑰解密
- byte[] decrypt = cipher.doFinal(encrypt);
- System.out.println("公開金鑰解密後2:" + new String(decrypt));
- }
-
- /**
- * 私密金鑰加密,公開金鑰解密 使用CIPHER_ALGORITHM_ECB1 = RSA/ECB/PKCS1Padding
- * @param str
- * @throws Exception
- */
- static void method3(String str) throws Exception {
- KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
- KeyPair keyPair = keyGenerator.generateKeyPair();
- publicKey = keyPair.getPublic();
- privateKey = keyPair.getPrivate();
- cipher = Cipher.getInstance(CIPHER_ALGORITHM_ECB1);
- cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私密金鑰加密
- byte[] encrypt = cipher.doFinal(str.getBytes());
- System.out.println("私密金鑰加密後3:" + Arrays.toString(encrypt));
-
- cipher.init(Cipher.DECRYPT_MODE, publicKey);//公開金鑰解密
- byte[] decrypt = cipher.doFinal(encrypt);
- System.out.println("公開金鑰解密後3:" + new String(decrypt));
- }
- }
Java密碼編譯演算法 RSA