Tag: aes

在AES解密时,给定Final Block未正确填充

首先,我会告诉我的主要目标是什么。 我将使用AES加密客户端中的某些内容,然后使用RSA公钥加密重要的AES规范,并将AES加密数据和RSA加密AES规范发送到服务器。 所以在服务器上,我将使用RSA私钥解密AES密钥规范,然后使用这些AES规范,我将解密AES加密数据。 我通过测试加密和解密成功地使RSA部分工作。 在实现RSa之前,我要使这个AES艺术工作。 对于客户端,我使用的是crypto-js $(“#submit”).click(function() { var salt = CryptoJS.lib.WordArray.random(16); var iv = CryptoJS.lib.WordArray.random(16); var pass = CryptoJS.lib.WordArray.random(16); var message = “Test Message for encryption”; var key128Bits = CryptoJS.PBKDF2(pass, salt, { keySize: 128 }); var key128Bits10Iterations = CryptoJS.PBKDF2(pass, salt, { keySize: 128, iterations: 10 }); var encrypted = CryptoJS.AES.encrypt(message, key128Bits10Iterations, { iv: iv, […]

如何使用OpenSSL解密Java AES加密数据?

我正在连接使用AES加密数据的旧Java应用程序(应用程序无法更改)。 以下是原始Java代码实例化AES密码的方法: SecretKeySpec skeySpec = new SecretKeySpec(key, “AES”); cipher = Cipher.getInstance(“AES”); cipher.init(Cipher.ENCRYPT_MODE, skeySpec ); 我是一名C / C ++开发人员,而不是Java,但据我所知,这个遗留Java代码没有指定模式,也没有指定初始化向量。 有人碰巧知道Java默认使用什么,因为它没有指定? 我们需要新的C / C ++应用程序来解密Java加密的数据。 但是我不知道OpenSSL的初始化向量和链接模式使用什么,因为我不知道java的用途。

Java和PHP之间的加密不匹配

我正在研究一种将数据传递给第三方应用程序的加密系统。 加密是用Java完成的,解密是用PHP完成的。 尽管多次尝试,但我无法通过PHP应用程序打开加密字符串。 出于测试目的,我创建了一个PHP脚本,它也加密了数据,因此我可以比较Java和PHP加密的字符串。 结果与第21个字符匹配,然后它们不同。 这就是我所拥有的: // Java – Encrypt private String EncryptAES(String text,String key) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), “AES”); // Instantiate the cipher Cipher cipher = Cipher.getInstance(“AES”); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(text.getBytes()); String encrypttext = new BASE64Encoder().encode(encrypted); return encrypttext; } RESULT: TeUZAFxoFoQy/roPm5tXyPzJP/TLAwR1aIGn2xHbZpsbY1qrKwXfO+F/DAqmeTwB0b8e6dsSM+Yy0zrQt22E2Q== 和 // PHP – Encrypt RESULT: TeUZAFxoFoQy/roPm5tXyC05wta1Z5YOXcq4OtgFoSbfVi/bHAuD6B5tDthT8EcGXQir08UAx0QvcqRJ2fJmbQ== […]

python AES加密java解密

我有超过1000张需要加密的图片和video。 顶部只是简单的东西,我想使用AES,但我无法弄清楚如何在我的计算机上加密然后解密设备上的项目。 我将使用python加密计算机上的所有项目。 然后在一个随需应变的时尚将使用java解密该项目(Android应用程序) 任何简单的解释都会做伪代码也很好。 我遇到的主要问题是如何使用相同的密钥进行加密和解密。 我一直在生成密钥,无法将其移植到其他设备进行解密。 谢谢 Python代码。 Works加密和解密。 from Crypto.Cipher import AES import os, random, struct key = ‘0123456789abcdef’ mode = AES.MODE_CBC chunksize = 64*1024 iv = ”.join(chr(random.randint(0,0xFF)) for i in range(16)) encryptor = AES.new(key,mode,iv) filesize = os.path.getsize(‘sample.jpg’) with open(‘sample.jpg’,’rb’) as infile: with open(‘sample.enc’,’wb’) as outfile: outfile.write(struct.pack(‘<Q',filesize)) outfile.write(iv) while True: chunk = infile.read(chunksize) […]

将文本加密为AES / CBC / PKCS7Padding

我正在开发一个Web应用程序来使用java 6加密一些文本。 我必须做的加密是CBC模式的AES(Rijndael),带有PKCS7填充和128位密钥。 我看到一篇文章解释了如何以与我必须做的相同的方式进行加密,但是使用了PKCS5填充。 这篇文章的链接在这里: https://bit502.wordpress.com/2014/06/27/codigo-java-encriptar-y-desencriptar-texto-usando-el-algoritmo-aes-con-cifrado-por-bloques-cbc-de-128-比特/ 我改变 private final static String cI = “AES/CBC/PKCS5Padding”; 至 private final static String cI = “AES/CBC/PKCS7Padding”; 但Java无法为此找到提供商。 有人能告诉我怎么做吗?

java和.net中的加密结果不一样

我的.net项目中有一个加密密码的方法 public string Encrypt(string plainText) { string PassPhrase = “#$^&*!@!$”; string SaltValue = “R@j@}{BAe”; int PasswordIterations = Convert.ToInt32(textBox5.Text); //amend to match java encryption iteration string InitVector = “@1B2c3D4e5F6g7H8”; int KeySize = 256; //amend to match java encryption key size byte[] initVectorBytes = Encoding.ASCII.GetBytes(InitVector); byte[] saltValueBytes = Encoding.ASCII.GetBytes(SaltValue); byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText); PasswordDeriveBytes password= new PasswordDeriveBytes( […]

AES-256 CBC在php中加密并在Java中解密,反之亦然

JAVA import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; class AES256JavaPhp{ public static void main(String[] args) throws Exception { Base64 base64 = new Base64(); Cipher ciper = Cipher.getInstance(“AES/CBC/PKCS5Padding”); SecretKeySpec key = new SecretKeySpec(“PasswordPassword”.getBytes(“UTF-8″),”AES”); IvParameterSpec iv = new IvParameterSpec (“dynamic@dynamic@”.getBytes(“UTF-8”),0,ciper.getBlockSize()); //Encrypt ciper.init(Cipher.ENCRYPT_MODE, key,iv); byte[] encryptedCiperBytes = base64.encode ((ciper.doFinal(“Hello”.getBytes()))); System.out.println(“Ciper : “+new String(encryptedCiperBytes)); //Decrypt ciper.init(Cipher.DECRYPT_MODE, key,iv); byte[] […]

Android:使用带有iv和密钥的AES 256位加密来加密字符串

SecureRandom random = new SecureRandom(); // quite heavy, look into a lighter method. String stringToEncrypt = “mypassword”; byte[] realiv = new byte[16]; random.nextBytes(realiv); Cipher ecipher = Cipher.getInstance(“AES”); SecureRandom random = new SecureRandom(); // quite heavy, look into a lighter method. byte[] realiv = new byte[16]; random.nextBytes(realiv); byte[] secret = “somelongsecretkey”.getBytes(); SecretKeySpec secretKey = new SecretKeySpec(secret, […]

为什么我在解密时会收到’BadPaddingException’?

这是我的加密设置: public static String encryptionAlgorithm = “AES”; public static short encryptionBitCount = 256; public static int encryptionMessageLength = 176; public static String hashingAlgorithm = “PBEWITHSHAAND128BITAES-CBC-BC”; //PBEWithSHA256And256BitAES-CBC-BC”PBEWithMD5AndDES”;//”PBKDF2WithHmacSHA1″; public static short hashingCount = 512; public static String cipherTransformation = “AES/CBC/PKCS5Padding”; 这是我的解密代码: public byte[] readMessage () throws Exception { byte[] iv = new byte[16]; byte[] message = new […]

AES加密Java无效密钥长度

我正在尝试创建AES加密方法,但由于某种原因,我一直在努力 java.security.InvalidKeyException: Key length not 128/192/256 bits 这是代码: public static SecretKey getSecretKey(char[] password, byte[] salt) throws NoSuchAlgorithmException, InvalidKeySpecException{ SecretKeyFactory factory = SecretKeyFactory.getInstance(“PBEWithMD5AndDES”); // NOTE: last argument is the key length, and it is 256 KeySpec spec = new PBEKeySpec(password, salt, 1024, 256); SecretKey tmp = factory.generateSecret(spec); SecretKey secret = new SecretKeySpec(tmp.getEncoded(), “AES”); return(secret); } public […]