AES加密方式

项目中也经常使用加密方式,Base64加密,AES加密,下面记录下使用AES加密方式

package com.czb;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Encoder;

public class Test {
    public static void main(String[] args) throws Exception{
        //AES加密方式
        String secKey = "afaaGn_A2bytbd10";//密钥
        BASE64Encoder encoder = new sun.misc.BASE64Encoder();
        SecretKey sKey = new SecretKeySpec(secKey.getBytes(), "AES");
        Cipher ci = Cipher.getInstance("AES");
        ci.init(Cipher.ENCRYPT_MODE, sKey);
        byte[] b = ci.doFinal("呵呵".getBytes());
        System.out.println(encoder.encode(b));
    }
}

解密

BASE64Decoder decoder = new BASE64Decoder();
        byte[] content = decoder.decodeBuffer(encoder.encode(b));

        byte[] enCodeFormat = "afaaGn_A2bytbd10".getBytes();
        SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
        Cipher cipher = Cipher.getInstance("AES");// 创建密码器
        cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
        byte[] result = cipher.doFinal(content);
        System.out.println( new String(result));
时间: 2024-10-10 07:31:00

AES加密方式的相关文章

[android]DES/3DES/AES加密方式

DES 支持8位加密解密,3Des支持24位,Aes支持32位.3Des是Des算法做三次.位数的单位是字节byte.不是bits. 3Des是把24位分成3组.第一组八位用来加密,第二组8位用于解密,第三组8位用于加密,所以.假设秘钥为123456781234567812345678(3组1-8),则相当于做了一次12345678的Des加密.比如:第一次用12345678秘钥对123进行加密得到 "LDiFUdf0iew=",然后用第二组的12345678对其进行解密(逆向加密过程

两种JavaScript的AES加密方式(可与Java相互加解密)

由于JavaScript属于弱类型脚本语言,因此当其与强类型的后台语言进行数据交互时会产生各种问题,特别是加解密的操作.本人由于工作中遇到用js与Java进行相互加解密的问题,在网上查了很多资料及代码段,均无法解决.后总结多篇文档内容终于找到解决办法,现记录与此: 第一种:加解密时需要秘钥(key)和秘钥偏移量(iv)的情况,在线验证地址:http://www.seacha.com/tools/aes.html //该方法可与Java进行相互加解密 <!doctype html> <ht

C# 常用加密方式

using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using System.IO; namespace TRSLMS.Website.Common{ /// <summary> /// MD5加密 /// </summary> public class Encrypt { private static MD5 md5 = MD5.Cre

python encrypt 实现AES加密

AES加密方式有五种 : ECB, CBC, CTR, CFB, OFB 从安全性角度推荐cbc算法 windows 下安装 : pip install pycryptodome linux 下安装 : pip install pycrypto cbc加密需要一个十六位的key 和一个十六位的iv(偏移量) ecb加密不需要iv aes cbc 加密的python实现 from Crypto.Cipher import AES from binascii import b2a_hex, a2b_

PHP对接java的AES/ECB/PKCS5Padding加密方式

因项目需要,要和一家保险公司对接调用API,我公司是PHP后台,保险公司是java后台,中间的数据传输就避免不了要加密.解密了,目前通行的加密AES比较推荐. 对接的过程中,就难免要翻山越水的了, 下面是我对接公司的加密说明: 一定要屡清楚自己的加密方式,否则一个加密模式ECB.CBC的差别,结果就千差万别的. 附上最终能使用的代码: <?php class Security { public static function encrypt($input, $key) { $size = mcr

iOS经常使用加密方式(MD5,AES,BASE64)与网络数据安全

演示样例项目下载地址  https://github.com/cerastes/Encryption 1MD5 创建MD5类 #import <Foundation/Foundation.h> @interface CJMD5 : NSObject +(NSString *)md5HexDigest:(NSString *)input; @end #import "CJMD5.h" #import <CommonCrypto/CommonDigest.h> @i

php AES加密 对应Java SHA1PRNG方式加密

做对接的时候,服务商做的AES加密通过SHA1PRNG算法(只要password一样,每次生成的数组都是一样的,所以可以用来做加密解密的key)进行了又一次加密,搞了好几个小时,直接看对应的代码吧,可以参考一下,只有Java的加密源码 private static byte[] encrypt(byte[] byteContent, byte[] password) throws Exception { KeyGenerator kgen = KeyGenerator.getInstance("

Linux进行AES加密每次结果都不一致并且解密失败报错

1. 现象 windows操作系统下进行"123456"的AES加密 encrypted message is below : QLNYZyjRnKF/zxAjzDt/lw== decrypted message is below : 123456 阿里云服务器,同样是"123456"的密码,每次加密结果都不一样,且不是QLNYZyjRnKF/zxAjzDt/lw==,解密是报错的 2.解决方法 经过检查之后,定位在生成KEY的方法上,如下: public stat

AES加密

package util; import java.io.UnsupportedEncodingException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;impo