AES加密工具

news/2024/11/27 8:30:34/

1.对称加密


  对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。

2.非对称加密


  非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。

3.AES标准规范

        AES最常见的有3种方案,分别是AES-128、AES-192和AES-256,它们的区别在于密钥长度不同,AES-128的密钥长度为16bytes(128bit / 8),后两者分别为24bytes和32bytes。密钥越长,安全强度越高,但伴随运算轮数的增加,带来的运算开销就会更大,所以用户应根据不同应用场合进行合理选择,192和256由于美国限制 需要相关授权 否则抛出异常。

4.java应用

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;import org.apache.commons.codec.binary.Base64;public class AES128Utils {public static final String KEY_ALGORITHM = "AES";public static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";public AES128Utils() {}/*** 生成密钥* @return* @throws Exception*/public static String initkey() throws Exception {KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);kg.init(128);SecretKey secretKey = kg.generateKey();return Base64.encodeBase64String(secretKey.getEncoded());}public static Key toKey(byte[] key) throws Exception {return new SecretKeySpec(key, KEY_ALGORITHM);}/*** 加密* @param data 源数据* @param key 密钥key* @return* @throws Exception*/public static String encrypt(String data, String key) throws Exception {Key k = toKey(Base64.decodeBase64(key));Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);cipher.init(1, k);return Base64.encodeBase64String(cipher.doFinal(data.getBytes()));}/*** 解密* @param data 已加密的数据* @param key 密钥* @return* @throws Exception*/public static String decrypt(String data, String key) throws Exception {Key k = toKey(Base64.decodeBase64(key));Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);cipher.init(2, k);return new String(cipher.doFinal(Base64.decodeBase64(data)));}/*** 测试main 方法* @param args* @throws Exception*/public static void main(String[] args) throws Exception {String source = "123456";System.out.println("原文:" + source);String key = initkey();System.out.println("密钥:" + key);String encryptData = encrypt(source, key);System.out.println("加密:" + encryptData);String decryptData = decrypt(encryptData, key);System.out.println("解密: " + decryptData);}
}


常用的加密算法_liaomin416100569的专栏-CSDN博客


http://www.ppmy.cn/news/940391.html

相关文章

RSA与AES加密

目录 一、非对称加密和RSA 1.非对称秘钥 2.RSA加密的核心 3.Python中实现RSA加密解密 二、HTTPS通信过程 三、对称加密和AES 1.AES简介 2.Python中实现AES加解密 一、非对称加密和RSA 1.非对称秘钥 https://blog.csdn.net/gao131360144/article/details/79966094HTTPS&…

AES加密的坑

其实不应该算AES加密的坑,而是加密后使用的坑 正常的加密应该是 $data openssl_encrypt($input, AES-256-CBC, $this->key, OPENSSL_RAW_DATA, $this->hex_iv); 返回给用户使用还要base64编码, base64_encode($data) 就是这个编码可能会造成解…

AES加密过程

AES是一个对称密码,旨在取代DES成为广泛使用的标准。 一、AES的加密过程 二、AES的数据结构 加密解密算法的输入是一个128位分组。这些分组被描述成44的字节方阵,这个分组被复制到state数组中,并在加密和解密的每一阶段都被修改。在字节方阵…

AES加密代码

这里分享AES的加密代码&#xff0c;包含两种填充方式PKCS7Padding和PKCS5Padding。代码中加密后的数据再加密成Base64形式&#xff0c;这一部分也可以换成16进制的形式。 Java本身是不支持PKCS7Padding加密、解密的&#xff0c;因此需要添加外部依赖。 <!-- https://mvnre…

AES加密操作

AES基本过程图解&#xff1a; &#xff08;1&#xff09;明文P&#xff1a;没有经过加密的数据。 &#xff08;2&#xff09;密钥K&#xff1a;用来加密明文的密码&#xff0c;在对称加密算法中&#xff0c;加密与解密的密钥是相同的。密钥为接收方与发送方协商产生&#xff0c…

AES加密文件

使用Python对文件进行AES算法的加密和解密 AES算法简介 高级加密标准, 它是一种对称加密算法&#xff0c;AES只有一个密钥&#xff0c;这个密钥既用来加密&#xff0c;也用于解密。 AES加密方式有五种&#xff1a;ECB, CBC, CTR, CFB, OFB。 从安全性角度推荐CBC加密方法&am…

AES加密简析

* AES加密是对称加密 128 192 256 分别表示密钥的长度 * AES的加密方式会将明文拆分成不同的块进行加密&#xff0c;例如一个256 位的数据用128的密钥加密&#xff0c;则分成 明文1&#xff08;128位&#xff09; 明文2&#xff08;128位&#xff09; 加密 密文1&#xff0…

Linux AES加密

一、AES ECB 256 加密函数 /* 功能&#xff1a;进行AES加密&#xff0c;返回hex转成的字符串 输入参数&#xff1a;Plaintext&#xff1a;明文 长度是16的倍数Ciphertext&#xff1a;密文 长度是明文长度的两倍key:密钥. */ int AES256_encrypt( unsigned char *Plaintext,unsi…