标签:AES 加密 -- iv Cipher key import data
java的AES加密:
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.MessageDigest;
import java.util.Arrays;
public class Hello {
public static void main(String[] args) {
String name = "哈喽啊";
//设置AES加密的 key 和 iv
String key = "fehg123hjj216jjwqhe16i32kj1nkn22";//key必需是32位
String iv = "77b07a672d57d643"; // iv 必须是16位
//加密
byte[] raw = key.getBytes();
SecretKeySpec secretKey = new SecretKeySpec(raw,"AES");
IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE,secretKey,ivSpec);
byte[] encrypted = cipher.doFinal(name.getBytes());
System.out.println(Arrays.toString(encrypted));
}catch (Exception e){
System.out.println(e);
}
}
}
python的AEC加密:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
KEY= "fehg123hjj216jjwqhe16i32kj1nknnw"
IV ="77b07a672d57d64c"
def aes_encrypt(data_string):
aes = AES.new(
key = KEY.encode('utf-8'),
mode = AES.MODE_CBC,
iv = IV.encode('utf-8'),
)
raw = pad(data_string.encode("utf-8"),16)
return aes.encrypt(raw)
data = aes_encrypt("哈喽啊")
#将字节类型转成到16进制表示
c = data.hex()
print(c) #打印结果:f30a976c22f42dbd7d6bf26fe2c84cc9
print(data) # 打印结果(字节类型): b'\xf3\n\x97l"\xf4-\xbd}k\xf2o\xe2\xc8L\xc9'
print([i for i in data]) #打印结果(每个字节的ASCII码):[243, 10, 151, 108, 34, 244, 45, 189, 125, 107, 242, 111, 226, 200, 76, 201]
标签:AES,加密,--,iv,Cipher,key,import,data 来源: https://www.cnblogs.com/zhiqianggege/p/16212016.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。