• 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
  • 相关阅读:
    决策树算法系列之一 ID3
    线性递归数列算法题
    Python爬虫快速上手教程
    gensim快速上手教程
    GCN和GCN在文本分类中应用
    命名实体如何进行概念消歧?
    浅谈神经网络中的激活函数
    nginx安装配置和基本使用
    netty学习总结(三)
    netty学习总结(二)
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/4337283.html
Copyright © 2020-2023  润新知