Tag: aes

使用C#进行AES加密和使用Java进行解密

我只想确认我对AES如何工作的理解。 如果公司#1正在加密数据,并将此数据发送到公司#2进行解密,那么我们假设其中一个使用C#和另一个Java。 只要两者都使用相同的共享密钥,是否有任何其他设置/配置明智的双方应该同意确保数据正确加密和解​​密?

Java AES加密整个字符串

如何使用AES加密整个字符串。 我下面的代码只加密到第一个识别的空间:(。我该如何解决这个问题?谢谢 SecretKeySpec key = new SecretKeySpec(salt.getBytes(), “AES”); Cipher cipher = Cipher.getInstance(“AES/ECB/PKCS5Padding”, “SunJCE”); cipher.init(Cipher.ENCRYPT_MODE, key); String result = new String(cipher.doFinal(message.getBytes())); System.out.println(“Encrypted:” + result); 编辑 OMG我不能相信这一点,我怎么可能想念这个:(因为我的扫描仪是下一个而不是nextLine …这一天有多尴尬这让我感到尴尬,直到现在才真正想到检查那个。问题解决了:)谢谢大家

如何附加到AES加密文件

我正在编写某种生成加密日志文件的记录器。 不幸的是,密码学不是我的强项。 现在我可以写入文件,然后关闭文件。 然后我可以打开它,附加一些消息,再次关闭,解密后我在文件中间看到填充字节。 有没有办法处理加密文件,而不必每次我想附加一些消息时解密它? 编辑 :更多细节。 当前实现使用CipherOutputStream。 据我所知,没有办法寻求使用它。 如果我能控制输出数据大小可以被块大小整除,我可以使用’NoPadding’选项吗?

无法在Java和PHP之间交换使用AES-256加密的数据

我的问题是:我在Java中加密的东西我可以在Java中完美解密,但PHP mcrypt无法解密。 我用mcrypt加密的东西我可以用mcrypt解密,但不能用Java解密。 我想从Java应用程序发送和接收加密数据到PHP页面,所以我需要它兼容。 这就是我的…… JAVA … public static String crypt(String input, String key){ byte[] crypted = null; try{ SecretKeySpec skey = new SecretKeySpec(Base64.decodeBase64(key), “AES”); Cipher cipher = Cipher.getInstance(“AES/ECB/PKCS5Padding”); cipher.init(Cipher.ENCRYPT_MODE, skey); crypted = cipher.doFinal(input.getBytes()); }catch(Exception e){ } return Base64.encodeBase64String(crypted); } public static String decrypt(String input, String key){ byte[] output = null; try{ SecretKeySpec skey = […]

AES / CBC / PKCS5Padding与AES / CBC / PKCS7Padding具有256个密钥大小的性能java

我目前正在使用AES/CBC/PKCS5Padding来加密具有256字节密钥大小的Java文件,但是我在stackexchange PKCS#5-PKCS#7 Padding上找到了搜索,并且提到了, PKCS#5填充是PKCS#7填充的子集,用于8字节块大小 所以我想知道 对于上述配置, AES/CBC/PKCS7Padding的性能AES/CBC/PKCS7Padding会优于AES/CBC/PKCS5Padding ? 我们如何在Java中配置块大小,如上所述 PKCS#7填充适用于1到255字节的任何块大小。 我的示例代码是, SecureRandom rnd = new SecureRandom(); IvParameterSpec iv = new IvParameterSpec(rnd.generateSeed(16)); KeyGenerator generator = KeyGenerator.getInstance(“AES”); generator.init(256); SecretKey k = generator.generateKey(); Cipher c = Cipher.getInstance(“AES/CBC/PKCS5Padding”); c.init(Cipher.ENCRYPT_MODE, k, iv);

用于加密/解密的Java SimpleCrypto类在Coldfusion 9和Java(Android)中产生不同的结果

我试图使用广泛使用的SimpleCrypto java类来加密Java(Android)中的字符串并解密ColdFusion 9中的字符串(反之亦然)。 我已将完全相同的SimpleCrypto类导入ColdFusion并将其命名为: sc = createObject(“java”, “SimpleCrypto”).init(); encrypted = sc.encrypt(myKey, “john”); 当用“apple”键加密字符串“john”时,它在CF中输出:9E90A36325AE4F4F7352D6469A7068A2 当我在Android中使用EXACT SAME类时: String key = “apple”; try { sEncrypted = SimpleCrypto.encrypt(key, “john”); Log.d(TAG, sEncrypted); } catch (Exception e) { e.printStackTrace(); } 日志输出:CBE2ADDBA9882F545DFEC1700E7CD518 不用说,我正在疯狂,因为这些结果是不同的。 有谁知道为什么在ColdFusion和Java中使用相同的确切代码会产生不同的结果? 任何帮助将不胜感激。 以下是SimpleCrypto.java的源代码: import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; /** * Usage: * * String […]

如何使用Java从CryptoJS解密加密的AES-256字符串?

我有来自CryptoJS的加密AES-256字符串和密码短语。 我需要用Java解密它,但无法弄清楚如何做到这一点。 您似乎需要IV,密钥和salt来解密,并且在CryptoJS主页中 ,加密数据已经包含所有这些,并且CryptoJS可以以某种方式将它们从加密输入中解析出来。 谁知道怎么做? 我已经看到了很多关于CryptoJS的例子 – Java加密/解密,但大多数都使用硬编码的IV /密钥,或者只是将密码/密钥从cryptoJS端发送到Java端。 我所拥有的只是一个密码,就像这个网站所做的那样!

如何在Java和Objective-C(iPhone)之间使AES加密相同?

我正在加密objective-c中的字符串,并使用AES加密Java中的相同字符串,并且看到一些奇怪的问题。 结果的第一部分与某个点匹配,但后来却不同,因此当我将Java的结果解码到iPhone上时,它无法对其进行解密。 我正在使用一个源代码字符串“现在然后这是什么废话。你知道吗?” 使用“1234567890123456”的键 加密的objective-c代码如下:注意:它是NSData类别,因此假设在NSData对象上调用该方法,因此’self’包含要加密的字节数据。 – (NSData *)AESEncryptWithKey:(NSString *)key { char keyPtr[kCCKeySizeAES128+1]; // room for terminator (unused) bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding) // fetch key data [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; NSUInteger dataLength = [self length]; //See the doc: For block ciphers, the output size will always be less than or //equal to […]

Java AES 128加密与openssl不同

我们遇到了一种奇怪的情况,我们在Java中使用的加密方法会产生不同的输出到openssl,尽管它们在配置上看起来相同。 使用相同的键和IV,文本“快速布朗狐狸跳过懒狗!” 加密到base64’d字符串…… openssl: A8cMRIrDVnBYj2+XEKaMOBQ1sufjptsAf58slR373JTeHGPWyRqJK+UQxvJ1B/1L Java: A8cMRIrDVnBYj2+XEKaMOBQ1sufjptsAf58slR373JTEVySz5yJLGzGd7qsAkzuQ 这是我们的openssl电话…… #!/bin/bash keySpec=”D41D8CD98F00B2040000000000000000″ ivSpec=”03B13BBE886F00E00000000000000000″ plainText=”The quick BROWN fox jumps over the lazy dog!” echo “$plainText”>plainText openssl aes-128-cbc -nosalt -K $keySpec -iv $ivSpec -e -in plainText -out cipherText base64 cipherText > cipherText.base64 printf “Encrypted hex dump = ” xxd -p cipherText | tr -d ‘\n’ printf “\n\n” printf “Encrypted […]

Java openssl加密/解密密钥生成

我正在使用Java 8,我试图用Java模拟以下openssl调用。 加密: echo -n ‘hello world’ | openssl enc -a -aes-256-cbc -md sha256 -pass pass:97DE:4F76 U2FsdGVkX18PnO / NLSxJ1pg6OKoLyZApMz7aBRfKhJc = 解密: echo U2FsdGVkX18PnO/NLSxJ1pg6OKoLyZApMz7aBRfKhJc= | openssl enc -d -a -aes-256-cbc -md sha256 -pass pass:97DE:4F76 你好,世界 问题: 我的实现不起作用。 我已经访问了许多其他StackOverflow答案,但未能找到正确的实现。 任何人都可以指出我正确的方向来解决这个问题吗? 上例中的openssl系统调用使用摘要sha256。 如果我使用sha1,而不是Java实现,那么只需PBKDF2WithHmacSHA256 PBKDF2WithHmacSHA1更改PBKDF2WithHmacSHA1吗? Test.java package test; import java.security.spec.KeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import […]