首页 > 系统 > Android > 正文

Android之RAS加密算法测试实例

2019-10-24 20:43:19
字体:
来源:转载
供稿:网友
这篇文章介绍了Android之RAS加密算法测试实例,有需要的朋友可以参考一下
 
复制代码代码如下:

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 RSAHelper {   

        
      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;   
      }   

      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;   
      }   

        
      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);   

    
      }   

}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表