Android直接可以使用的AES加密帮助类

Android中使用aes加密解密 最近项目中产品要求后台返回的数据以加密的形式返给我,这样子的话,app拿到的数据就是加密过的了,aes解密之前还要先用base64解密,()接到新需求之后开始网上各种搜,因为本人也是小菜鸟一枚,只能通过先搬运代码再进行操作。好了不多说了,上代码:public class AESUtils { /* * 加密用的Key 可以用26个字母和数字组成 此处使用AES-128-CBC加... 阅读详情




import java.io.UnsupportedEncodingException;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
/**
 * Created by admin on 2016/3/24.
 */
public class AESHelper {
    private static final String CipherMode = "AES/ECB/PKCS5Padding";


    ///** 创建密钥 **/
    private static SecretKeySpec createKey(String password) {
        byte[] data = null;
        if (password == null) {
            password = "";
        }
        StringBuffer sb = new StringBuffer(32);
        sb.append(password);
        while (sb.length() < 32) {
            sb.append("0");
        }
        if (sb.length() > 32) {
            sb.setLength(32);
        }
        try {
            data = sb.toString().getBytes("UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return new SecretKeySpec(data, "AES");
    }


    // /** 加密字节数据 **/
    public static byte[] encrypt(byte[] content, String password) {
        try {
            SecretKeySpec key = createKey(password);
            Cipher cipher = Cipher.getInstance(CipherMode);
            cipher.init(Cipher.ENCRYPT_MODE, key);
            byte[] result = cipher.doFinal(content);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    ///** 加密(结果为16进制字符串) **/
    public static String encrypt(String content, String password) {
        byte[] data = null;
        try {
            data = content.getBytes("UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        data = encrypt(data, password);
        String result = byte2hex(data);
        return result;
    }


    // /** 解密字节数组 **/
    public static byte[] decrypt(byte[] content, String password) {
        try {
            SecretKeySpec key = createKey(password);
            Cipher cipher = Cipher.getInstance(CipherMode);
            cipher.init(Cipher.DECRYPT_MODE, key);
            byte[] result = cipher.doFinal(content);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    ///** 解密16进制的字符串为字符串 **/
    public static String decrypt(String content, String password) {
        byte[] data = null;
        try {
            data = hex2byte(content);
        } catch (Exception e) {
            e.printStackTrace();
        }
        data = decrypt(data, password);
        if (data == null)
            return null;
        String result = null;
        try {
            result = new String(data, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return result;
    }


    // /** 字节数组转成16进制字符串 **/
    public static String byte2hex(byte[] b) {
        StringBuffer sb = new StringBuffer(b.length * 2);
        String tmp = "";
        for (int n = 0; n < b.length; n++) {
            // 整数转成十六进制表示
            tmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
            if (tmp.length() == 1) {
                sb.append("0");
            }
            sb.append(tmp);
        }
        return sb.toString().toUpperCase(); // 转成大写
    }


    // /** 将hex字符串转换成字节数组 **/
    private static byte[] hex2byte(String inputString) {
        if (inputString == null || inputString.length() < 2) {
            return new byte[0];
        }
        inputString = inputString.toLowerCase();
        int l = inputString.length() / 2;
        byte[] result = new byte[l];
        for (int i = 0; i < l; ++i) {
            String tmp = inputString.substring(2 * i, 2 * i + 2);
            result[i] = (byte) (Integer.parseInt(tmp, 16) & 0xFF);
        }
        return result;
    }
}




/**在对应的加密位置的操作 ==》***指的是一个密钥,建议拼字符串(思路,JNI+本地),这个还是蛮牛逼的
 private String setSecret(String text) {
        String newpassword = AESHelper.decrypt(password, "***");
        return newpassword;
    }


    private String getSecret(String text) {
        String newpassword = AESHelper.decrypt(password, "***");
        return newpassword;
    }*/
(原创)android使用AES加密和解密文件 前言 最近公司需要对本公司的一些下载文件进行加密解密需求,也就尝试去实现下,其实需要借助第三方的jar包:bcprov-jdk15on-155.jar,下载这个可以到网上搜或者下载本人的demo即可,注意:需要加密和解密的key是一致的才可以解密,不然就会解密失败。不多说,直接上代码。 效果图 代码: 实现加密解密逻辑代码 package com.vsoontech. 阅读详情

相关推荐

调试好用的AES加密算法 和 安卓AES加密对应算法

在C# 中的AES加密算法 using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace AES_Dome { cla

nieweiking的博客 3892

AesEncryptHelper帮助类,实现C#版Aes加解密

/// <summary> /// /// </summary> internal class AesEncryptHelper { /// <summary> /// Encrypts the specified asc key. /// </summary> ...

分享智能财税相关技术探索 1572

android 安全之——文件加密AES加密算法、

AES加密算法是目前比较流行加密方式,目前还没有针对AES有效的破解方式,比较靠谱。AES又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。 AES加密数据块和密钥长度可以是128比特、192比特、256比特中的任意一个。 AES加密有很多轮的重复和变换。大致步骤如下: 1、密钥扩展(KeyExpan

qq_34425418的博客 1892

Android加密工具类,Android AES加密工具类分享

1、AES加密工具类java不支持PKCS7Padding,只支持PKCS5Padding。我们知道加密算法由算法+模式+填充组成,下一篇介绍iOS和Android通用的AES加密,本篇文章使用PKCS5Padding加密方式。package com.example.aesdemo;import java.io.UnsupportedEncodingException;import javax.c...

weixin_34042899的博客 513

Android AES 加密、解密

/ 加密// 秘钥// 创建AES秘钥// 创建密码器// 初始化解密器// 解密通常,如果加密和解密都是在同一个平台,比较简单,我们生成一个秘钥以后,将秘钥保存到本地,解密的时候直接获取本地的秘钥来解密就可以了,通常的使用场景为本地将xxx文件加密后上传保存或备份,需要的时候,下载再解密。这样上传的文件比较安全。看上去很完美,下面问题来了,上述生产秘钥的方法,每次执行生成的秘钥都是不一样的。

2401_84544531的博客 756

AESHelper 工具类

NULL 博文链接:https://weifengxuxu.iteye.com/blog/2254262

java加密算法之AES小记

jce中提供了加解密的api: 1、首先应该明白AES是基于数据块的加密方式,也就是说,每次处理的数据是一块(16字节),当数据不是16字节的倍数时填充,这就是所谓的分组密码(区别于基于比特位的流密码),16字节是分组长度 AES支持五种模式:CBC,CFB,ECB,OFB,PCBC, jce中实现了三种补码方式:NoPadding,PKCS5Padding,ISO10126Padding;...

weixin_30673715的博客 328

Android使用Bmob移动后端云Restful API需要注意的问题

博客地址 http://blog.youkuaiyun.com/sbsujjbcy/article/details/48709073

Android中使用AES加密和解密

Android中如何使用AES进行加密和解密 作为初入社会的IT行业的大专实习生,只能在公司里被当牛一样每天工作到半夜十二点以后,在这里也是第一次写博客,目的只有两个:1.记录技术实现,尽可能的帮助网友解决困难、2.吐槽公司! 不多说了 直接看代码,在这里我就不说AES加密的原理了,直接看在Android里怎么使用 一.定义常量设置密钥和向量iv的值,在调用方法的时候直接赋值也可以 * 加密用的...

itboy_xiaowei的博客 4484

INCA_ProF脚本教程

一、首先INCA软件是当前主流标定开发软件之一,尤其在动力系统控制器的标定中应用非常广泛;与此同时ProF编程脚本是INCA软件提供各种实用功能之一,使用者可根据需求编写ProF脚本语言对ECU闪存编程等各种自定义操作。 二、然而ProF脚本语言在ETAS的官网或其他网络上并没有专门的使用教程,通常只有ETAS技术支持人员提供的ProF Documentation文档或少量可参考的Demo案例,然而ProF Documentation文档仅涉及ProF语言的函数的操作说明,没有从全局的框架上介绍Pro

weixin_29389627的博客 1万+

基于DNN、CNN与SVM的串联电弧故障智能检测:从原理到嵌入式部署

在电气安全与工业物联网领域,时间序列分类是处理传感器信号、实现状态监测与故障诊断的核心技术。其原理在于从连续的信号数据中提取有效特征,并利用机器学习模型识别异常模式。这项技术的核心价值在于能够实现设备预测性维护、提升系统安全性并降低运维成本,广泛应用于智能电表、电机健康监测、电力设备保护等场景。本文聚焦于电气安全中的一个具体且危险的隐患——串联电弧故障的检测。针对这一隐蔽性强、传统方法误报率高的问题,项目深入实践了三种主流AI模型:深度神经网络、卷积神经网络和支持向量机。通过对比DNN的通用特征学习能力、C

weixin_31860973的博客 413

安卓加密之AES加密base64编码

最近公司要求我完善一个测试APP,由公司的前辈搭建好主体框架,然后由我这个菜鸟来进行功能的开发。(文章只是记录一下自己遇到的问题,给以后的工作提个醒) 首先做的就是对需要发送的数据进行ASE加密,具体代码如下(因为AES加解密的工具类前辈已经写好了,所以我只需要调用方法就好了) encrypt = AESUtils.encrypt(a.getBytes(), AESKEY.get...

weixin_43930769的博客 1013

使用TBtools进行物种间共线性分析

Sequence Toolkit ---Fasta Tools ----ID Prefix (fasta文件)

sunny_dayone的博客 8752

Android实现AES加密

public class AESUtils { private static final String TAG = AESUtils.class.getSimpleName(); /** * 采用AES加密算法 */ private static final String KEY_ALGORITHM = "AES"; /** * 字符编码(用哪个都可以,要注意new String()默认使用UTF-8编码 getBytes()默认使用IS.

_陈泡泡的博客 7334

AOSP14 Launcher3——手势上滑关键类AbsSwipeHandler解析

通过精密的事件监听、状态管理和对系统动画 API 及 Launcher 内部组件的协调,实现了复杂而流畅的手势导航体验。它的抽象设计允许子类(如。是 Quickstep (Launcher3 的手势导航实现) 中处理。的核心逻辑抽象基类。这个非常核心且复杂的类。)定制特定的回家动画逻辑。好的,我们来深入分析。

Micheal_Yang's Blog 1521

手把手教你学SOME/IP「1.0•概述」

本文介绍了SOME/IP协议的基本概念和主要特点。SOME/IP全称为"Scalable service-Oriented MiddlewarE over IP",是一种面向服务的车载嵌入式通信协议,支持远程过程调用、事件通知等功能。文章指出SOME/IP是AUTOSAR标准的一部分,在车载以太网架构中处于应用层位置,负责服务调度和通信封装。协议具有可扩展性强、资源消耗低、兼容性好等优势,能满足汽车电子领域对实时性、可靠性的严格要求。同时,文章也说明了SOME/IP的正确书写规范,并解释

nihaoljq2010的博客 679

aes加密iv是什么_Android中的加密

目录,本文主要分为两部分:1.使用AES算法进行加密2.使用RSA算法进行加密在使用Encryption之前最好学习一些东西:算法类型(非对称和对称)模式和填充按键类型Java密码体系结构Android Key Store1、安卓中的AES加密AES是一种众所周知且最推荐的标准加密算法,该算法使用替换置换网络通过对称密钥对纯数据进行加密。对称密钥是由基于密码的密钥派生功能(PBKDF2)生成的是获...

weixin_39593523的博客 3800

28、解耦控制与晶圆表面缺陷模式识别

本文介绍了两种不同领域的技术方法:基于端口受控哈密顿(PCH)的三水箱液位系统解耦控制方法,以及基于无监督学习的晶圆表面缺陷模式识别方法。前者通过能量整形实现系统解耦与稳定控制,具有良好的抗干扰性和鲁棒性;后者采用无监督预训练与分类微调两阶段策略,利用WaUSM采样方法提升特征提取能力,在WM-811K数据集上实现了先进的分类性能。文章对比了两种方法的核心技术与优势,并探讨了其在工业控制与半导体制造中的应用前景及未来发展方向,为相关领域的研究与实践提供了有价值的参考。

git9versioner的博客 75

深入浅出 Android AES 加密解密:从理论到实战

Aes加解密实战

虎哥LoveDroid 2016

微信小程序 - {“errMsg”:”requestPayment:fail banned”} 微信小程序调用wx.requestPayment支付失败返回错误(uniapp微信小程序微信支付报错)

{“errMsg”:”requestPayment:fail banned”},微信小程序调用wx.requestPayment报错requestPayment:fail banned,uni-app微信小程序wx.requestPayment支付报错requestPayment:fail banned,拉起小程序支付报错,iPhone苹果ios真机微信支付报错,Android安卓手机微信支付报错,支付报错,商户配置,签名验证,uniapp 小程序支付微信支付一场,设置过b2b类目,确认了商户号相关功能正常

🏆 前端领域优质创作者 3347

芒果YOLO11改进145:Loss损失函数KLD:即插即用 NeurIPS顶会论文,独家首发原创新颖|通过 Kullback-Leibler 散度学习用于目标检测的高精度边界框

旋转检测Loss损失函数KLD:即插即用 NeurIPS顶会论文,独家首发原创新颖|通过 Kullback-Leibler 散度学习用于目标检测的高精度边界框

包括YOLOv5、YOLOv7、YOLOv8等模型改进 566

AES加密及在Android中的使用

1.AES简介 高级加密标准(AES,Advanced Encryption Standard),是最常见的对称加密算法,对称加密是指加密和解密使用相同的密钥,加密解密过程如下: 2.在Android中使用AES AES共有5种加密模式: ECB模式(电码本模式) CBC模式(密码分组链接模式) CTR(计算器模式) CFB(密码反馈模式) OFB(输出反馈模式) 比较常用的是ECB和CBC模式,除密钥外,CBC模式可额外传入一个偏移量(iv值)进行加密,增强了加密算法强度。 Android中已内置了

tlaqcxb的博客 1750

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

安卓 AES加密

AES指高级加密标准(Advanced Encryption Standard),是当前最流行的一种密码算法,下面是我自己整理的安卓针对AES加密的代码。 public class CryptAES { private static final String AESTYPE ="AES/ECB/pkcs5padding"; //加密模式和填充,可根据后台的加密模式和填充进行修改

zhenxili的博客 454

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android接口AES加密实践

加密方法分好多种,因为后端同学和ios端已经接入了AES加密,所以这里主要介绍AES加密。

star_nwe的博客 1364

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

AES加密及在Android中的使用(CBC可用)

AES加密及在Android中的使用AES简介在Android中使用AESAES加密(以CBC为例)AES解密 AES简介 高级加密标准(AES,Advanced Encryption Standard),是最常见的对称加密算法,对称加密是指加密和解密使用相同的密钥 在Android中使用AES AES共有5种加密模式: ECB模式(电码本模式) CBC模式(密码分组链接模式) CTR(计算器模式...

supersukun的博客 1966
上一篇: Android 底边栏回复 dialog
下一篇: android 与后台交互的两种方式xml和json
王晓恩
博客等级 码龄11年 28粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值