java web与android互通的aes算法

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

####Java实现代码

	//可自定义保证16btye即可private static final byte[] IV = {16, 26, -35, 23, 34, 125, -5, -4, -8, -9, -15, -78, 90, -8, -99, 100};public static byte[] encrypt(String content, String password) {try {SecretKeySpec key = getKey(password);//根据密码生成keyif(key == null){return null;}Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");// 创建密码器"算法/模式/补码方式"byte[] byteContent = content.getBytes("utf-8");cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(IV));//初始化,使用该模式,需要一个向量16byte的IvParameterSpecbyte[] result = cipher.doFinal(byteContent);// 加密return result;} catch (Exception e) {e.printStackTrace();return null;}}public static String encryptToStr(String content, String password) {byte[] bytes = encrypt(content, password);if(bytes == null){return null;}return Base64Util.encode(bytes);}public static byte[] decrypt(byte[] content, String password) {try {SecretKeySpec key = getKey(password);//根据密码生成keyif(key == null){return null;}Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//创建密码器"算法/模式/补码方式"cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(IV));//初始化,使用该模式,需要一个向量16byte的IvParameterSpecbyte[] result = cipher.doFinal(content);// 解密return result;} catch (Exception e) {e.printStackTrace();return null;}}public static String decryptFromStr(String encodeStr, String password) {byte[] encodeBytes = Base64Util.decodeToBytes(encodeStr);byte[] bytes = decrypt(encodeBytes, password);if(bytes == null){return null;}return new String(bytes);}//根据密码生成16byte的keyprivate static SecretKeySpec getKey(String password){try {byte[] passwdBytes = password.getBytes("utf-8");if(passwdBytes.length < 16){return null;}//简单转换为16byte,建议用复杂的转换以防被知道密码后破解byte[] bytes = new byte[16];for(int i = 0; i < 16; i++){bytes[i] = passwdBytes[i];}return new SecretKeySpec(bytes, "AES");}catch(Exception e){e.printStackTrace();return null;}}

####AES加密模式和填充方式 | 算法/模式/填充 | 16字节加密后数据长度 | 不满16字节加密后长度 | | ------------- |:-------------:|:-----:| |AES/CBC/NoPadding|16| 不支持| |AES/CBC/PKCS5Padding|32|16 |AES/CBC/ISO10126Padding|32|16 |AES/CFB/NoPadding|16|原始数据长度 |AES/CFB/PKCS5Padding|32|16 |AES/CFB/ISO10126Padding|32|16 |AES/ECB/NoPadding|16|不支持 |AES/ECB/PKCS5Padding|32|16 |AES/ECB/ISO10126Padding|32|16 |AES/OFB/NoPadding|16|原始数据长度 |AES/OFB/PKCS5Padding|32|16 |AES/OFB/ISO10126Padding|32|16 |AES/PCBC/NoPadding|16|不支持 |AES/PCBC/PKCS5Padding|32|16 |AES/PCBC/ISO10126Padding|32|16

转载于:https://my.oschina.net/jackruan/blog/538547

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql第三方工具binlog_mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)

一.概述由于服务器生成的二进制日志文件以二进制格式保存&#xff0c;所以如果要想检查这些文件的文本格式&#xff0c;就会用到mysqlbinlog日志管理工具。mysqlbinlog的语法如下:mysqlbinlog [options] log-files log-files2...其中options有很多选项&#xff0c;常用如下&…

JMeter部分功能详解

JMeter 介绍&#xff1a; 一个非常优秀的开源免费的性能测试工具。 优点&#xff1a;你用着用着就会发现它的重多优点&#xff0c;当然不足点也会呈现出来。 从性能工具的原理划分&#xff1a; Jmeter工具和其他性能工具在原理上完全一致&#xff0c;工具包含4个部分&#xff1…

登录时记住用户名和密码及cookie案例应用

文章原址&#xff1a;http://www.jb51.net/article/33588.htm 登录样子&#xff0c;可以参考某一论坛的登录介面&#xff1a; 记住这些信息&#xff0c;可以使用Cookie来实现&#xff0c;更多Cookie应用&#xff0c;可参考 http://jb51.net/article/33590.htm http://jb51.net…

退出登录后点返回键 是登录状态_看了这50条登录的测试点,你还敢说测试很容易吗...

条件&#xff1a;一个用户名输入框 (要求15个字符以内)一个密码输入框 (要求8个字符以内)一个登录按钮针对以上条件进行测试用例的设计先回顾一下测试用例的设计方法&#xff1a;等价类&#xff0c;边界值&#xff0c;错误猜测法&#xff0c;因果图&#xff0c;场景法测试功能点…

HTML5原生拖拽/拖放(drag drop)详解

前言 拖放&#xff08;drap && drop&#xff09;在我们平时的工作中&#xff0c;经常遇到。它表示&#xff1a;抓取对象以后拖放到另一个位置。目前&#xff0c;它是HTML5标准的一部分。我从几个方面学习并实践这个功能。 拖放的流程对应的事件 我们先看下拖放的流程&a…

Linux vmstat命令详解

vmstat命令是最常见的Linux/Unix监控工具&#xff0c;可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率&#xff0c;内存使用&#xff0c;虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令&#xff0c;一个是Linux/Unix都支持&#xff0c;二是…

python中如何比较两个列表_python中如何比较两个列表

cmp() 方法用于比较两个列表的元素。cmp()方法语法&#xff1a;cmp(list1, list2)参数&#xff1a;list1 -- 比较的列表。list2 -- 比较的列表。返回值&#xff1a;如果比较的元素是同类型的,则比较其值,返回结果。如果两个元素不是同一种类型,则检查它们是否是数字。如果是数字…

rc mysql common_RR与RC隔离级别下MySQL不同的加锁解锁方式

作者 韩杰沃趣科技MySQL数据库工程师出品 沃趣科技| RC与RR隔离级别下MySQL不同的加锁解锁方式MySQL5.7.21数据准备rootlocalhost : pxs 05:26:27> show create table dots\G*************************** 1. row ***************************Table: dotsCreate Table: …

[Javascript_库编写]创建自己的“JavaScript库”

一.编写JavaScript库要注意的问题 为了让自己的JS库构建的更加优雅、合理&#xff0c;我们编写JS库时要注意两方面的内容&#xff1a; 1.不要使用版本检测&#xff0c;而要使用能力检测 由于浏览器的类型和版本太多&#xff0c;以及不断的新的浏览器出现&#xff0c;我们不可能…

mysql5.6.24怎么打开_mysql 5.6.24 安装配置方法图文教程

由于工作需要&#xff0c;开始使用mysql数据库&#xff0c;已经好久没有使用了。基本已经忘了差不多。今天重新安装配置了一下&#xff0c;写个随笔记录一下&#xff0c;以免自己以后需要的时候翻看&#xff0c;如有不正确或需要补充的&#xff0c;希望大家多多留言。首先下载m…

sublime text 3安装及使用

安装配置 安装&#xff1a; 安装环境:Ubuntu 16.04 官网下载sublime text 3 https://www.sublimetext.com/3 解压&#xff1a; tar xvf 文件名 进入 sublime_text_3文件夹&#xff0c;运行 ./sublime_text 注册码&#xff1a;我用的时候有用 —– BEGIN LICENSE —–TwitterInc…

微信公众号新功能-原创声明、赞赏功能、评论管理、页面模版

原文&#xff1a;http://www.shichangbu.com/portal.php?modview&aid25931 公众号如何申请这些功能&#xff1f; 在微信公众号后台和QQ经常都有人问我诸如此类的问题&#xff1a;”微信公众平台原创声明怎么开通?“、”微信赞赏等功能是怎么回事…

为什么闹钟设置了却不响_又被iPhone闹钟坑了?解决闹钟不响问题看这里!

原标题&#xff1a;又被iPhone闹钟坑了&#xff1f;解决闹钟不响问题看这里&#xff01;你有没有过这样的体验&#xff0c;早上醒来&#xff0c;闹钟还没响&#xff0c;内心想&#xff1a;真好&#xff0c;还可以再睡会。拿起手机想看看还能再睡多久&#xff0c;结果……我的天…

CSS3实现纸张边角卷起效果

html代码 1 <body>2 <div class"page">3 <div class"page-box">4 <h1>5 兔子先生6 </h1>7 <p>8 这几…

fzu 1894 单调队列

http://acm.fzu.edu.cn/problem.php?pid1894 Problem 1894 志愿者选拔Accept: 1328 Submit: 4200Time Limit: 1500 mSec Memory Limit : 32768 KB Problem Description 世博会马上就要开幕了&#xff0c;福州大学组织了一次志愿者选拔活动。参加志愿者选拔的同学们排队接…

均线带角度的指标_选股指标:均线角度并列向上,量能倍增飞扬趋势明显,短线操作可考虑...

今天要讲的是量能飞扬的选股指标&#xff0c;这个指标是按照20日、30日、60日、120日均线反正切角度原理为基础设计的公式&#xff0c;这4条均线角度排列向上&#xff0c;股价呈现向上的趋势&#xff0c;选出的股票有大概率上涨的空间&#xff0c;完整的公式如下&#xff1a;A2…

将链表中m-n范围内的数进行倒序

Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1->2->3->4->5->NULL, m 2 and n 4, return 1->4->3->2->5->NULL. Note:Given m, n satisfy the following condition:1 ≤ m ≤ n ≤ lengt…

win10下安装ubuntu14.04双系统(UEFI固件)

2019独角兽企业重金招聘Python工程师标准>>> 在windows10环境下安装双系统&#xff0c;遇到了很多坑。作为一个用惯了虚拟机的人&#xff0c;本想通过安装双系统来充分利用计算机本身的硬件资源&#xff0c;结果失败了n次&#xff0c;摸索了整整一天&#xff0c;看了…

扫雷游戏制作学习过程

1. 扫雷游戏的构思&#xff1a; 设计为初级&#xff0c;中级&#xff0c;高级三个级别。 因此不妨设置为如下规格&#xff1a; 9x9 16x15和30x16 &#xff08;行&#xff0c;列&#xff09;规格不同地雷的数量也不同&#xff0c;分别为 10&#xff0c;40 &#xff0c;99 2.在…