zoukankan      html  css  js  c++  java
  • 24、AES RSA加密处理记录

    一、加密过程解释

    前提:发送方为A,接受方为B
    牢记:RSA为非对称加密,AES为对称加密。对称加密,属于传统的加密技术,加密和解密的秘钥都是相同的,AES的秘钥长度有128、192、256三种。非对称加密属于现加密技术,加密和解密的秘钥是不同的,一个是公钥,一个是私钥,常用于数字签名和加密秘钥。

    1、B产生RSA密钥,并将对应的RSA公钥发给A
    2、A得到RSA公钥;随机产生一个AES密钥;使用RSA公钥和RSA算法对AES密钥进行加密,并写入文件头部;用AES密钥和AES算法加密数据,写入文件尾部;将数据发给B
    3、B收到数据,使用RSA密钥和RSA解密算法,解密头部,得到AES密钥;使用AES密钥和AES算法解密剩余数据。

    二、代码实现

    1、RSA加密

     1 String mingwen = "哈哈 加密也就那回事嘛";
     2 
     3         
     4 
     5         byte[] private_key;
     6 
     7         byte[] private_key_encode=null ;
     8 
     9         byte[] mingwen_encrypt=null;;
    10 
    11         byte[] mingwen_encrypt_encode=null;
    12 
    13          
    14 
    15         try {
    16 
    17             RSAUtil rsaUtil = RSAUtil.createRSAUtilWithRandomKeys();
    18 
    19 
    20 
    21             
    22 
    23             //加密后的私钥
    24 
    25             private_key = rsaUtil.getPrivateKeyBytes();
    26 
    27             private_key_encode = Base64.encode(private_key, 1);
    28 
    29             
    30 
    31             //经过rsa和base64加密后的数据
    32 
    33             mingwen_encrypt = rsaUtil.encrypt(mingwen.getBytes());
    34 
    35             mingwen_encrypt_encode = Base64.encode(mingwen_encrypt, 1);
    36 
    37             
    38 
    39         } catch (Exception e2) {
    40 
    41             // TODO Auto-generated catch block
    42 
    43             e2.printStackTrace();
    44 
    45         }
    46 
    47          
    48 
    49          try {
    50 
    51             //rsaUtil.genKeyPair();
    52 
    53         } catch (Exception e1) {
    54 
    55             // TODO Auto-generated catch block
    56 
    57             e1.printStackTrace();
    58 
    59         }
    View Code

    2、RSA解密

     1    //对RSA私钥进行BASE64解码
     2 
     3             byte[] private_key_1 =Base64.decode( private_key_encode,1);
     4                         
     5                         //产生RSAUtil的实例
     6 
     7                         RSAUtil rsaUtil_1 = new RSAUtil(null, private_key_1, null);
     8 
     9 
    10                         //将密文进行BASE64解密
    11 
    12                         byte[]  miwen_encrypt = Base64.decode(mingwen_encrypt_encode, 1);
    13 
    14 
    15                         //将密文进RSA解密
    16 
    17             byte[]  miwen= rsaUtil_1.decrypt(miwen_encrypt);
    18 
    19             
    20 
    21             try {
    22 
    23                 Log.e(tag,"mingwen is "+new String(miwen, "utf-8"));
    24 
    25                 
    26 
    27             } catch (UnsupportedEncodingException e) {
    28 
    29                 // TODO Auto-generated catch block
    30 
    31                 e.printStackTrace();
    32 
    33             }
    View Code

    3、AES解密

     1 //创建AES实例
     2 
     3         AESUtil aesUtil = new AESUtil("1234567812345678".getBytes());
     4 
     5       
     6 
     7         //Base64解码 说明:里边的参数为首先经过AES加密,然后BASE64
     8 
     9         byte[] encData = Base64.decode("oO7khHummGsw6dFPKu83C8blEjdVUDbhf2ii4c0ET5HoOIL5kClQR7gj/rP04fSj", 0);
    10 
    11         
    12 
    13         //AES解码
    14 
    15         byte[] decData = aesUtil.decrypt(encData);
    16 
    17         
    18 
    19         try {
    20 
    21             mMarque.setText(new String(decData, "utf-8"));
    22 
    23         } catch (UnsupportedEncodingException e) {
    24 
    25             e.printStackTrace();
    26 
    27             mMarque.setText(e.getMessage());
    28 
    29         }*/
    View Code
  • 相关阅读:
    bzoj 4012: [HNOI2015]开店
    POJ 1054 The Troublesome Frog
    POJ 3171 Cleaning Shifts
    POJ 3411 Paid Roads
    POJ 3045 Cow Acrobats
    POJ 1742 Coins
    POJ 3181 Dollar Dayz
    POJ 3040 Allowance
    POJ 3666 Making the Grade
    洛谷 P3657 [USACO17FEB]Why Did the Cow Cross the Road II P
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/4337283.html
Copyright © 2011-2022 走看看