睫晉姬

          java RSA 加解密

            import java.security.Key;

            import java.security.KeyFactory;

            import java.security.KeyPair;

            import java.security.KeyPairGenerator;

            import java.security.PrivateKey;

            import java.security.PublicKey;

            import java.security.interfaces.RSAPrivateKey;

            import java.security.interfaces.RSAPublicKey;

            import java.security.spec.PKCS8EncodedKeySpec;

            import java.security.spec.X509EncodedKeySpec;

            import javax.crypto.Cipher;

            import sun.misc.BASE64Decoder;

            import sun.misc.BASE64Encoder;

            public class RSACoder {

            /**

            * 得到公鑰

            * @param key 密鑰字符串(經過base64編碼)

            * @throws Exception

            */

            public static PublicKey getPublicKey(String key) throws Exception {

            byte[] keyBytes;

            keyBytes = (new BASE64Decoder()).decodeBuffer(key);

            X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);

            KeyFactory keyFactory = KeyFactory.getInstance("RSA");

            PublicKey publicKey = keyFactory.generatePublic(keySpec);

            return publicKey;

            }

            /**

            * 得到私鑰

            * @param key 密鑰字符串(經過base64編碼)

            * @throws Exception

            */

            public static PrivateKey getPrivateKey(String key) throws Exception {

            byte[] keyBytes;

            keyBytes = (new BASE64Decoder()).decodeBuffer(key);

            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);

            KeyFactory keyFactory = KeyFactory.getInstance("RSA");

            PrivateKey privateKey = keyFactory.generatePrivate(keySpec);

            return privateKey;

            }
            /**

            * 得到密鑰字符串(經過base64編碼)

            * @return

            */

            public static String getKeyString(Key key) throws Exception {

            byte[] keyBytes = key.getEncoded();

            String s = (new BASE64Encoder()).encode(keyBytes);

            return s;

            }

            public static void main(String[] args) throws Exception {

            KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");

            //密鑰位數

            keyPairGen.initialize(1024);

            //密鑰對

            KeyPair keyPair = keyPairGen.generateKeyPair();

            // 公鑰

            PublicKey publicKey = (RSAPublicKey) keyPair.getPublic();

            // 私鑰

            PrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();

            String publicKeyString = getKeyString(publicKey);

            System.out.println("public:\n" + publicKeyString);

            String privateKeyString = getKeyString(privateKey);

            System.out.println("private:\n" + privateKeyString);

            //加解密類

            Cipher cipher = Cipher.getInstance("RSA");//Cipher.getInstance("RSA/ECB/PKCS1Padding");

            //明文

            byte[] plainText = "我們都很好!郵件:@sina.com".getBytes();

            //加密

            cipher.init(Cipher.ENCRYPT_MODE, publicKey);

            byte[] enBytes = cipher.doFinal(plainText);

            //通過密鑰字符串得到密鑰

            publicKey = getPublicKey(publicKeyString);

            privateKey = getPrivateKey(privateKeyString);

            //解密

            cipher.init(Cipher.DECRYPT_MODE, privateKey);

            byte[]deBytes = cipher.doFinal(enBytes);

            publicKeyString = getKeyString(publicKey);

            System.out.println("public:\n" +publicKeyString);

            privateKeyString = getKeyString(privateKey);

            System.out.println("private:\n" + privateKeyString);

            String s = new String(deBytes);

            System.out.println(s);

            }

            }

          posted on 2009-12-05 17:18 睫晉姬 閱讀(330) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 治多县| 惠东县| 清涧县| 济阳县| 海城市| 台北市| 六枝特区| 延安市| 涞水县| 顺昌县| 南雄市| 琼海市| 兴安县| 望城县| 邵东县| 于都县| 泉州市| 肃南| 柳林县| 苏尼特右旗| 长沙县| 杨浦区| 辽宁省| 仙居县| 甘肃省| 广河县| 长沙县| 新源县| 夹江县| 兴国县| 柏乡县| 庆云县| 拜城县| 朝阳市| 当阳市| 砚山县| 宁陕县| 沁水县| 孙吴县| 闽侯县| 界首市|