Tag: aes

Android加密“pad block corrupted”exception

在此代码中,此行导致exception: clearText = c.doFinal(Base64.decode(encryptedText, Base64.DEFAULT)); javax.crypto.BadPaddingException: pad block corrupted 我从以下代码获得了代码: http : //www.techrepublic.com/blog/software-engineer/attention-android-developers-keep-user-data-safe/ 有任何想法吗? private String decrypt (String encryptedText) { byte[] clearText = null; try { SecretKeySpec ks = new SecretKeySpec(getKey(), “AES”); Cipher c = Cipher.getInstance(“AES”); c.init(Cipher.DECRYPT_MODE, ks); clearText = c.doFinal(Base64.decode(encryptedText, Base64.DEFAULT)); return new String(clearText, “UTF-8”); } catch (Exception e) { return null; } } […]

带有Bouncy Castle的256位AES / CBC / PKCS5Padding

我无法将以下JDK JCE加密代码映射到Bouncy Castles Light-weight API: public String dec(String password, String salt, String encString) throws Throwable { // AES algorithm with CBC cipher and PKCS5 padding Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”, “BC”); // Construct AES key from salt and 50 iterations PBEKeySpec pbeEKeySpec = new PBEKeySpec(password.toCharArray(), toByte(salt), 50, 256); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(“PBEWithSHA256And256BitAES-CBC-BC”); SecretKeySpec secretKey = new […]

javascript中的AES加密和java中的解密

我有一个令人兴奋的网络服务,用AES加密和解密,现在我必须以与java相同的方式加密,但是在javascript中。 我已经阅读了有关在javascript中执行此操作的所有主题,但未找到任何有用的解决方案。 Javascript总是以不同的方式加密,我找不到原因。 这是令人兴奋的java代码: public static String encrypt(String data) throws Exception { byte[] keyValue = encryptionKey.getBytes(); Key key = new SecretKeySpec(keyValue, “AES”); Cipher c = Cipher.getInstance(“AES/ECB/PKCS5Padding”); c.init(Cipher.ENCRYPT_MODE, key); byte[] encVal = c.doFinal(data.getBytes()); String encryptedValue = new BASE64Encoder().encode(encVal); return encryptedValue; } 这是我倾向于使用的javascript代码,但提供了不同的加密(CryptoJS): var encrypted = CryptoJS.AES.encrypt(data, encryptionKey); 或其中任何一个(GibberishAES): // Defaults to 256 bit encryption var encrypted […]

java.security.NoSuchAlgorithmException:找不到任何支持AES / ECB / PKCS7PADDING的提供程序

我试图使用AES算法加密数据。 但是,发生了以下exception。 java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/ECB/PKCS7PADDING 有人知道这个问题的解决方案吗? 我的JDK版本是1.7。

Java的AES加速

我想加密/解密许多小的(2-10kB)数据。 现在的性能还可以:在Core2Duo上,我得到大约90 MBytes / s AES256(当使用2个线程时)。 但是我可能需要在将来改进它 – 或者至少减少对CPU的影响。 是否可以使用Java专用AES加密硬件(使用JCE,或者可能是不同的API)? 如果我有更好的CPU,Java会利用特殊的CPUfunction(SSE5?!)吗? 或者有更快的JCE提供商? (我试过SunJCE和BouncyCastle – 没什么大不同。) 其他可能性?

在Java中加密和在C#中解密为AES 256位

1.我有java函数加密xml文件并返回加密的String。 /// Java Class import java.security.Key; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; public class Crypt { public static String key = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”; public static byte[] key_Array = Base64.decodeBase64(key); public static String encrypt(String strToEncrypt) { try { //Cipher _Cipher = Cipher.getInstance(“AES”); //Cipher _Cipher = Cipher.getInstance(“AES/ECB/PKCS5PADDING”); //Cipher _Cipher = Cipher.getInstance(“AES/CBC/PKCS5PADDING”); Key SecretKey = new SecretKeySpec(key_Array, “AES”); Cipher […]

基于AES-256密码的Java加密/解密

我找到了一个用Java实现AES加密/解密的指南,并尝试理解每一行,因为我把它放到我自己的解决方案中。 但是,我并不完全理解它并因此而遇到问题。 最终目标是使用基于密码的加密/解密。 我已经阅读了关于此的其他文章/ stackoverflowpost,但大多数都没有提供足够的解释(我在Java中加密非常新) 我现在的主要问题是,即使我设置了byte[] saltBytes = “Hello”.getBytes(); 我到底仍然得到一个不同的Base64结果( char[] password每次都是随机的,但我读到以char[]forms保留密码更安全。我的另一个问题是当程序进入decrypt() ,我在byte[] saltBytes = salt.getBytes(“UTF-8”);得到一个NullPointerException byte[] saltBytes = salt.getBytes(“UTF-8”); 提前感谢您提供给我的任何帮助/建议。 有问题的代码: import java.security.AlgorithmParameters; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; import javax.xml.bind.DatatypeConverter; public class EncryptionDecryption { private static String salt; private […]

如何使用带有AES和PBE的Bouncy Castle轻量级API

我有一块使用JCE算法“PBEWithSHA256And256BitAES-CBC-BC”创建的密文。 提供者是BouncyCastle。 我想做的是使用BouncyCastle轻量级API解密这个密文。 我不想使用JCE,因为这需要安装Unlimited Strength Jurisdiction Policy Files。 在使用BC与PBE和AES时,文档似乎很薄。 这是我到目前为止所拥有的。 解密代码无例外地运行但返回垃圾。 加密代码, String password = “qwerty”; String plainText = “hello world”; byte[] salt = generateSalt(); byte[] cipherText = encrypt(plainText, password.toCharArray(), salt); private static byte[] generateSalt() throws NoSuchAlgorithmException { byte salt[] = new byte[8]; SecureRandom saltGen = SecureRandom.getInstance(“SHA1PRNG”); saltGen.nextBytes(salt); return salt; } private static byte[] encrypt(String […]

Java使用AES 256和128对称密钥加密

我是密码技术的新手。 我发现这段代码可以进行对称加密。 byte[] key = //… secret sequence of bytes byte[] dataToSend = … Cipher c = Cipher.getInstance(“AES”); SecretKeySpec k = new SecretKeySpec(key, “AES”); c.init(Cipher.ENCRYPT_MODE, k); byte[] encryptedData = c.doFinal(dataToSend); 它的工作。 在这里,我可以使用自己的密码。 这就是我需要的东西。 但我不知道如何做128或256 Symmetric Enctryption。 如何在代码中使用128和256键?

Java AES加密和解密

我想使用带有16字节密钥的128位AES加密来加密和解密密码。 我在解密值时收到javax.crypto.BadPaddingException错误。 我在解密时错过了什么? public static void main(String args[]) { Test t = new Test(); String encrypt = new String(t.encrypt(“mypassword”)); System.out.println(“decrypted value:” + t.decrypt(“ThisIsASecretKey”, encrypt)); } public String encrypt(String value) { try { byte[] raw = new byte[]{‘T’, ‘h’, ‘i’, ‘s’, ‘I’, ‘s’, ‘A’, ‘S’, ‘e’, ‘c’, ‘r’, ‘e’, ‘t’, ‘K’, ‘e’, ‘y’}; SecretKeySpec skeySpec = […]