iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >android使用AES加密和解密文件实例代码
  • 262
分享到

android使用AES加密和解密文件实例代码

androidaes加密 2023-05-31 03:05:44 262人浏览 泡泡鱼
摘要

前言最近公司需要对本公司的一些下载文件进行加密解密需求,也就尝试去实现下,其实需要借助第三方的jar包:bcprov-jdk15on-155.jar,下载这个可以到网上搜或者下载本人的demo即可,注意:需要加密和解密的key是一致的才可以

前言

最近公司需要对本公司的一些下载文件进行加密解密需求,也就尝试去实现下,其实需要借助第三方的jar包:bcprov-jdk15on-155.jar,下载这个可以到网上搜或者下载本人的demo即可,注意:需要加密和解密的key是一致的才可以解密,不然就会解密失败。不多说,直接上代码。

效果图

android使用AES加密和解密文件实例代码android使用AES加密和解密文件实例代码

android使用AES加密和解密文件实例代码

代码:

实现加密解密逻辑代码

package com.vsoontech.p2p.sample;  import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlGorithmException; import java.security.SecureRandom;  import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; import javax.crypto.ShortBufferException;    public enum AES {   INSTANCE;   private Key key;       public String generateKey() throws NoSuchAlgorithmException {     KeyGenerator keygen = KeyGenerator.getInstance("AES");     SecureRandom random = new SecureRandom();     keygen.init(random);     this.key = keygen.generateKey();     return "Algorithm FORMat Encoded:" + key.getAlgorithm() + " - " + key.getFormat() + " - " + new String(key.getEncoded());   }       public void encrypt(InputStream in) throws InvalidKeyException, ShortBufferException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException, IOException {     this.crypt(in, null, Cipher.ENCRYPT_MODE);   }       public String decrypt(InputStream in) throws InvalidKeyException, ShortBufferException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException, IOException {     return this.crypt(in, Cipher.DECRYPT_MODE);   }       public void encrypt(InputStream in, OutputStream out) throws InvalidKeyException, ShortBufferException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException, IOException {     this.crypt(in, out, Cipher.ENCRYPT_MODE);   }       public void decrypt(InputStream in, OutputStream out) throws InvalidKeyException, ShortBufferException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException, IOException {     this.crypt(in, out, Cipher.DECRYPT_MODE);   }       public void crypt(InputStream in, OutputStream out, int mode) throws IOException, ShortBufferException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException {     Cipher cipher = Cipher.getInstance("AES");     cipher.init(mode, this.key);      int blockSize = cipher.getBlockSize();     int outputSize = cipher.getOutputSize(blockSize);     byte[] inBytes = new byte[blockSize];     byte[] outBytes = new byte[outputSize];      int inLength = 0;     boolean more = true;     while (more) {       inLength = in.read(inBytes);       if (inLength == blockSize) {  //只要输入数据块具有全长度(长度可被8整除),调用update方法         int outLength = cipher.update(inBytes, 0, blockSize, outBytes);         if (out != null) out.write(outBytes, 0, outLength);       } else {         more = false;       }     }     if (inLength > 0)  //不具有全长度,调用doFinal方法       outBytes = cipher.doFinal(inBytes, 0, inLength);     else       outBytes = cipher.doFinal();     if (out != null) {       out.write(outBytes);       out.flush();     }   }       public String crypt(InputStream in, int mode) throws IOException, ShortBufferException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException {     Cipher cipher = Cipher.getInstance("AES");     cipher.init(mode, this.key);      int blockSize = cipher.getBlockSize();     int outputSize = cipher.getOutputSize(blockSize);     byte[] inBytes = new byte[blockSize];     byte[] outBytes = new byte[outputSize];      int inLength = 0;     boolean more = true;     StringBuilder sb = new StringBuilder();     while (more) {       inLength = in.read(inBytes);       if (inLength == blockSize) {  //只要输入数据块具有全长度(长度可被8整除),调用update方法         int outLength = cipher.update(inBytes, 0, blockSize, outBytes);       } else {         more = false;       }     }     if (inLength > 0)  //不具有全长度,调用doFinal方法       outBytes = cipher.doFinal(inBytes, 0, inLength);     else       outBytes = cipher.doFinal();     sb.append(new String(outBytes));     return sb.toString();   }     public void seTKEy(Key key) {     this.key = key;   }    public Key getKey() {     return key;   } } 

--结束END--

本文标题: android使用AES加密和解密文件实例代码

本文链接: https://www.lsjlt.com/news/223262.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • android使用AES加密和解密文件实例代码
    前言最近公司需要对本公司的一些下载文件进行加密解密需求,也就尝试去实现下,其实需要借助第三方的jar包:bcprov-jdk15on-155.jar,下载这个可以到网上搜或者下载本人的demo即可,注意:需要加密和解密的key是一致的才可以...
    99+
    2023-05-31
    android aes 加密
  • Golang实现AES加密和解密的示例代码
    目录对称加密 AES 算法加解密文件加密解密说明对称加密 AES 算法 (Advanced Encryption Standard ,AES) 优点 算法公开、计算量小、加密速度快、...
    99+
    2024-04-02
  • Java使用AES加密和解密的实例详解
    Java使用AES加密和解密的实例详解前言:AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了1...
    99+
    2023-05-31
    java aes 加密
  • Java 实现 AES 加密和解密完整示例
    1、简介 AES,全称为 Advanced Encryption Standard,是一种分组密码算法,用于保护敏感数据的传输和存储。AES 分为 128 位和 256 位两种密钥长度,可以对数据进行...
    99+
    2023-09-09
    java aes AES 加密 解密
  • 使用Java实现加密之AES加解密
    目录1.背景知识2.AES简介3.AES的加密过程(AES处理单位:字节)4.Java实现4.1 生成密钥和偏移量4.2 AESUtil.java 源码4.3 执行结果4.4 线上验...
    99+
    2023-05-18
    Java AES AES 加解密
  • Java实现对称加密DES和AES的示例代码
    目录实验内容和要求参考代码实验内容和要求 采用Java实现采用对称密码算法的应用软件,所用算法包括DES算法和AES算法。要求该软件具有图形用户界面,能生成密钥,以及对字符串和文件进...
    99+
    2023-05-14
    Java实现对称加密DES AES Java对称加密DES AES Java对称加密 Java DES AES
  • Java实现Excel文件加密解密的示例代码
    目录概述示例大纲工具Java代码示例示例1加密工作簿示例2解密工作簿示例3加密工作表示例4加密工作表指定数据范围示例5设置工作表公式隐藏示例6解密Excel工作表概述 设置excel...
    99+
    2024-04-02
  • Vue+php 使用AES进行加密解密
    php 代码 public function encrypt($data, $key, $iv) { return base64_encode(openssl_enc...
    99+
    2023-09-28
    1024程序员节 php vue.js aes加密解密
  • python实现AES算法及AES-CFB8加解密源码
    目录Python实现AES算法生成轮密钥加密解密完整代码如下测试测试程序Python实现AES-CFB8加解密Python实现AES算法 密码学课程老师留的作业,我觉得用python...
    99+
    2024-04-02
  • Python编程密码学文件加密与解密代码解析
    目录本章要点1 纯文本文件2 使用置换密码加密文件的源代码transpositionFileCipher.py3 运行置换密码加密文件程序的样例4 文件操作4.1 打开文件4.2 数...
    99+
    2024-04-02
  • 如何使用JavaScript实现AES加密
    随着互联网的普及和数据传输的日益频繁,数据的安全问题也日渐重要。为了保障数据的安全性,加密算法被广泛采用。AES(Advanced Encryption Standard)是目前最常用的对称加密算法之一,广泛用于数据传输和存储过程中的加密保...
    99+
    2023-05-14
  • 如何使用OpenSSL加密和解密文件
    这篇文章主要讲解了“如何使用OpenSSL加密和解密文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用OpenSSL加密和解密文件”吧!加密是对消息进行编码的一种方法,这样可以保护消...
    99+
    2023-06-17
  • python实现凯撒密码加密解密的示例代码
    凯撒加密就是通过将字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移,被替换成密文。例如,当偏移量是2的时候,所有的字母B将被替换...
    99+
    2024-04-02
  • 密码系统AES私钥RSA公钥的加解密示例
    目录前言百科的诠释java使用公私钥加解密的实例前言 密钥是成对存在的,加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,使用...
    99+
    2024-04-02
  • php7+中怎么使用openssl替代mcrypt进行AES加密解密
    这篇文章主要介绍php7+中怎么使用openssl替代mcrypt进行AES加密解密,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mcrypt十年过去,现在php7+中已经开始淘汰。官方给出掉提示:mcrypt_ge...
    99+
    2023-06-15
  • FlutterRSA加密解密的示例代码
    目录对称加密非对称加密第一步、首先pubspec.yaml中添加依赖第二步、获取公钥私钥文件第三步、在pubspec.yaml文件中添加公钥私钥文件。第四步、实现Encrypt加密解...
    99+
    2024-04-02
  • PHP代码加密和扩展解密实战
    目录实战开始1.下载源码2.解压3.进入源码目录4.修改自定义文件头header.c5.修改默认的加密key6.为了安全机制,开启绑定网卡选项加密代码注意事项部署安装方式优缺点安全性...
    99+
    2024-04-02
  • Java Base64 加密与解密示例代码
    目录一、Java 8 基本 Base64二、Java 8 URL 加密三、Java 8 MIME(Multipurpose Internet Mail Extensions) 加密四...
    99+
    2022-12-12
    Java Base64 加密与解密 Java Base64 加密
  • Linux下如何使用GPG加密和解密文件
    这篇文章给大家分享的是有关Linux下如何使用GPG加密和解密文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。GnuPG(英文:GNU Privacy Guard,简称:GPG)是加的免费工具,大多用于加密信息...
    99+
    2023-06-27
  • PHP代码加密和扩展解密的示例分析
    这篇文章主要介绍了PHP代码加密和扩展解密的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作