睫晉姬

          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)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 屏东市| 新兴县| 南木林县| 灌南县| 砀山县| 静乐县| 白银市| 顺昌县| 曲沃县| 文登市| 南皮县| 东港市| 望奎县| 莱芜市| 保康县| 永定县| 徐州市| 金寨县| 克什克腾旗| 宝鸡市| 江永县| 巴林左旗| 黑龙江省| 香港| 桂阳县| 进贤县| 贵南县| 南乐县| 秦皇岛市| 拉孜县| 信丰县| 遂溪县| 通化市| 罗平县| 饶阳县| 漯河市| 罗田县| 临桂县| 息烽县| 大方县| 亚东县|