Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java使用AES加密解密 AES-128-ECB加密

java使用AES加密解密 AES-128-ECB加密

作者头像
故久
发布于 2020-06-09 00:10:19
发布于 2020-06-09 00:10:19
3.4K00
代码可运行
举报
文章被收录于专栏:故久故久
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;
/**
 *
 * @author Administrator
 *
 */
public class AES {

    // 加密
    public static String Encrypt(String sSrc, String sKey) throws Exception {
        if (sKey == null) {
            System.out.print("Key为空null");
            return null;
        }
        // 判断Key是否为16位
        if (sKey.length() != 16) {
            System.out.print("Key长度不是16位");
            return null;
        }
        byte[] raw = sKey.getBytes("utf-8");
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
        byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));

        return new Base64().encodeToString(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
    }

    // 解密
    public static String Decrypt(String sSrc, String sKey) throws Exception {
        try {
            // 判断Key是否正确
            if (sKey == null) {
                System.out.print("Key为空null");
                return null;
            }
            // 判断Key是否为16位
            if (sKey.length() != 16) {
                System.out.print("Key长度不是16位");
                return null;
            }
            byte[] raw = sKey.getBytes("utf-8");
            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, skeySpec);
            byte[] encrypted1 = new Base64().decode(sSrc);//先用base64解密
            try {
                byte[] original = cipher.doFinal(encrypted1);
                String originalString = new String(original,"utf-8");
                return originalString;
            } catch (Exception e) {
                System.out.println(e.toString());
                return null;
            }
        } catch (Exception ex) {
            System.out.println(ex.toString());
            return null;
        }
    }

    public static void main(String[] args) throws Exception {
        /*
         * 此处使用AES-128-ECB加密模式,key需要为16位。
         */
        String cKey = "1234567890123456";
        // 需要加密的字串
        String cSrc = "www.gowhere.so";
        System.out.println(cSrc);
        // 加密
        String enString = AES.Encrypt(cSrc, cKey);
        System.out.println("加密后的字串是:" + enString);

        // 解密
        String DeString = AES.Decrypt(enString, cKey);
        System.out.println("解密后的字串是:" + DeString);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JAVA与PHP之间进行aes加密解密
用户数据应经过加密再传输,此文档为aes128加密(cbc模式)的说明 摘要算法为SHA-512
BUG弄潮儿
2022/06/30
2.7K0
AES加密——Java与iOS的解决方案
该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael为名投稿高级加密标准的甄选流程。(Rijndael的发音近于"Rhine doll")
Originalee
2018/08/30
2.5K0
Java中使用AES对数据进行加密
此处介绍的是Java自带的AES加密算法,并且支持中文,具体参数如下: 算法模式:ECB 密钥 长度:128bits 16位长 偏移量: 默认 补码方式:PKCS5Padding 解密串编码方式:base64 秘钥为16为长度的字符串。 1. 加密函数 /** * 使用参数中的密钥加密 * @param 明文 * @param 密钥 * @return 密文 */ public static String Encrypt(St
geekfly
2022/05/06
7650
最新版-Python和Java实现Aes相互加解密
需要使用Python和Java实现同一个AES加解密算法,使Python版本加密的密文能够由Java代码解密,反之亦然。
翎野君
2023/05/12
1.3K0
最新版-Python和Java实现Aes相互加解密
关于加解密、加签验签的那些事 | 得物技术
面对MD5、SHA、DES、AES、RSA等等这些名词你是否有很多问号?这些名词都是什么?还有什么公钥加密、私钥解密、私钥加签、公钥验签。这些都什么鬼?或许在你日常工作没有听说过这些名词,但是一旦你要设计一个对外访问的接口,或者安全性要求高的系统,那么必然会接触到这些名词。所以加解密、加签验签对于一个合格的程序员来说是必须要掌握的一个概念。接下来我们就一文彻底搞懂这些概念。
用户10346649
2023/03/10
1K0
关于加解密、加签验签的那些事 | 得物技术
接口API中的敏感数据基于AES进行安全加密后返回
由于之前没有相关的经验,所以先在网上搜罗了一阵,这篇博客不错https://www.cnblogs.com/codeon/p/6123863.html给了我一些思路和启发。
翎野君
2023/05/12
9870
接口API中的敏感数据基于AES进行安全加密后返回
DES和AES算法加密解密
前言:在api传递过程中或者操作cookie中的参数都是明文,很容易暴露一些用户以及私密的信息。
王念博客
2019/07/24
2K0
武电实业卡密接口对接经验分享
以往卡密都是电信直接提供txt文件我们这边再导入数据库中,现在电信要求厂家获取卡密必须通过接口调用,此次对接主要用到三个方面知识:
Jack Chen
2018/09/14
7250
武电实业卡密接口对接经验分享
Java工具集-AES加密工具类
代码示例 package com.simple.util.security; /** * @program: simple_tools * @description: AES加密 * @author: Mr.chen * @create: 2020-03-08 22:00 **/ import com.simple.util.base.StringUtils; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; impo
cwl_java
2020/03/11
8.4K1
【Android】Android加密和解密方式
不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。 如信息摘要(Message Digest)和安全散列(Secure Hash)算法属于此类,常见的算法包括 MD5、SHA1、PBKDF2、bcrypt 等。 特点: 使用MD5和SHA进行加解密:
全栈程序员站长
2022/08/30
6840
用户名与密码前后加密、后台解密实现方案
随着https的推广,越来越多的网站转到https协议了。但是还是有不少网站没有切换到https,还是使用http。使用http协议的网站,如果没有自己做用户名、密码及敏感信息加密;网络就会明文传输这些数据,如果一些没有用心的人对服务发起攻击,就可能给公司造成损失。
BUG弄潮儿
2020/06/15
5.1K0
用户名与密码前后加密、后台解密实现方案
常见的加密算法
前端使用开源CryptoJS (crypto.js) 为 JavaScript加密算法,Github地址(https://github.com/brix/crypto-js)。目前已支持的算法包括:
分母为零
2019/07/04
1.8K0
AES对称加密
private static final String ENCODING = "UTF-8"; private static final String KEY_ALGORITHM = "AE
用户5899361
2020/12/07
1.2K0
php des 加密解密实例
des加密是对称加密中在互联网应用的比较多的一种加密方式,php 通过mcrypt扩展库来支持des加密,要在Php中使用des加密,需要先安装mcrypt扩展库 1 $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); 2 $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 3 $key = "This is a very secret key";//密钥 4 $text
joshua317
2018/04/16
2.9K0
接口加密传输设计及AES加解密代码DEMO
接口加密的方案设计:可以将请求的json字符串aes加密,通过params字段传输, 接口服务端接收到参数,先解密,然后转换成对象。 继续业务逻辑的处理。 (另外一种方案是:针对敏感字段aes加密,服务接收端对敏感字段来解密处理)
oktokeep
2024/10/09
1650
Android常用加密方式
加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。加密技术包括两个元素:算法和密钥。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。
全栈程序员站长
2022/08/29
1.5K0
Android常用加密方式
java加密工具类,可设置对应的加解密key
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/107460.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/21
4330
若依框架配置文件数据源配置加密
使用AES工具类最下方的main方法,生成数据源用户名和密码加密后的内容,放到配置文件中
裴大头
2022/01/17
2K0
若依框架配置文件数据源配置加密
Java实现AES ECP PKCS5Padding加解密工具类
如果我们将加密后的字节数组,直接 new String() 获得一个字符串,然后解密这个字符串,会发现解密失败哦
一灰灰blog
2020/05/09
1.5K0
Java实现AES ECP PKCS5Padding加解密工具类
Android 安全
MD5长度默认是128bit,这样表达不好,所以将二级制转换成16进制,4bit代表一个16进制,所有128/4=32 ,所以为32位16进制。 MD5 16位与32位区别是将32位后面的16位去掉,得到的16位
Yif
2019/12/26
1.1K0
相关推荐
JAVA与PHP之间进行aes加密解密
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验