zoukankan      html  css  js  c++  java
  • 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:
    " + publicKeyString);   
        
                String privateKeyString = getKeyString(privateKey);   
                System.out.println("private:
    " + 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:
    " +publicKeyString);   
        
                privateKeyString = getKeyString(privateKey);   
                System.out.println("private:
    " + privateKeyString);   
        
                String s = new String(deBytes);   
                System.out.println(s);   
        
        
          }   
        
    }   
  • 相关阅读:
    【bzoj2100】[Usaco2010 Dec]Apple Delivery 最短路
    【bzoj2190】[SDOI2008]仪仗队 欧拉函数
    【bzoj1507】[NOI2003]Editor /【bzoj1269】[AHOI2006]文本编辑器editor Splay
    【bzoj1821】[JSOI2010]Group 部落划分 Group Kruskal
    【bzoj1877】[SDOI2009]晨跑 费用流
    【bzoj2834】回家的路 分层图最短路
    【bzoj1579】[Usaco2009 Feb]Revamping Trails 道路升级 分层图最短路
    在UIElement外面多套一层布局面板(Grid、StackPanel)的意义
    在Window工作区按下鼠标左键拖动窗体
    滚动条——WPF ScrollViewer的应用
  • 原文地址:https://www.cnblogs.com/lee0oo0/p/3314599.html
Copyright © 2011-2022 走看看