Tag: 加密

如何在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相当于C ++加密

我有以下用于加密的c ++代码片段: EVP_CIPHER_CTX ctx; const EVP_CIPHER * cipher = EVP_des_ede3_cbc(); unsigned char iv[EVP_MAX_IV_LENGTH]; unsigned char key[EVP_MAX_KEY_LENGTH]; String seed; _config->get_value(“crypto_seed”, &seed); // uses the seed value from pimp config. if (seed.is_empty()) { return false; } EVP_BytesToKey(cipher, EVP_sha1(), (unsigned char *) 0, // no salt reinterpret_cast(const_cast(seed.chars())), seed.length(), 1, // hash passphrase just once. key, iv); EVP_CIPHER_CTX_init(&ctx); EVP_CipherInit_ex(&ctx, […]

Java,如何实现移位密码(Caesar Cipher)

我想实现一个Caesar Cipher移位,将字符串中的每个字母增加3。 我收到此错误: possible loss of precision required char; found int 这是我到目前为止的代码: import java.util.Scanner; import java.io.*; public class CaesarCipher { public static void main (String [] args) { char[] letters = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, […]

使用Java解密OpenSSL PEM编码的RSA私钥?

我有一个加密的私钥,我知道密码。 我需要使用Java库解密它。 我不想使用BouncyCastle,除非没有其他选择。 根据以往的经验,有太多的变化,没有足够的文档。 私钥是这种forms: —–BEGIN RSA PRIVATE KEY—– Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,56F3A98D9CFFA77A X5h7SUDStF1tL16lRM+AfZb1UBDQ0D1YbQ6vmIlXiK…. ….. /KK5CZmIGw== —–END RSA PRIVATE KEY—– 我相信关键数据是Base64编码,因为我看到64个字符后的\r\n 。 我尝试了以下解密密钥: import java.security.Key; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.PKCS8EncodedKeySpec; import javax.crypto.EncryptedPrivateKeyInfo; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; public String decrypt(String keyDataStr, String passwordStr){ // This key data start from “X5… to ==” char [] password=passwordStr.toCharArray(); […]

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 […]

处理加密exception

在Java中处理加密\解密时,这个非常基本的代码段很常见。 final Cipher cipher = Cipher.getInstance(“AES/CBC/NoPadding”); cipher.init(Cipher.ENCRYPT_MODE, key, iv); cipher.doFinal(*something*); 仅这三行,可能会抛出六个exception,我不确定处理它们的最干净(在代码可读性方面)是什么。 尝试六个catch子句对我来说真的很像。 在使用这些物体时,是否有微图案或最佳实践,我显然是缺失的? 编辑 对不起,我想我没有很好地解释自己。 我的问题不是关于避免try \ catch子句,而是如果有一种常见的方法来处理类似的情况。 例外情况是 NoSuchPaddingException, NoSuchAlgorithmException InvalidAlgorithmParameterException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException

在java中加密文本文件的最简单方法

对于我的学校项目,我必须certificate我可以在程序中使用文件处理。 为此,我做了一个非常简单的登录过程,您可以创建一个帐户,将用户名和密码写入资源文件夹中的文本文件。 显然这根本没有安全性,因为它不是为了展示文件处理而设计的,但是我的老师说我应该尝试在文件中添加一些加密以获得更好的成绩。 我做了一些研究,很多人都在推荐DES。 我遇到的问题是我的项目没有太多时间,需要尽快完成。 使用DES似乎需要一段时间来实现所有额外的代码。 在我的程序中,我使用一个简单的lineNumberReader来逐行读取文件。 要写入我正在使用BufferedWriter的文件。 无论如何都要非常简单地加密这些数据吗? 它不一定非常安全,但我需要certificate我至少试图加密数据。 加密和解密都将在同一应用程序上完成,因为数据未被传输。 我可以自己创建一个非常简单的加密和解密算法吗?

javax.crypto.BadPaddingException

我正在研究AES算法,我有这个我无法解决的exception。 javax.crypto.BadPaddingException: Given final block not properly padded at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..) at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..) at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..) at javax.crypto.Cipher.doFinal(DashoA13*..) 例外情况发生在解密部分。 我在与解密算法不同的地方初始化密钥 KeyGenerator kgen = KeyGenerator.getInstance(“AES”);//key generation for AES kgen.init(128); // 192 and 256 bits may not be available 然后我把它从文件中读取的密文传递给下面的方法 public String decrypt(String message, SecretKey skey) { byte[] raw = skey.getEncoded(); SecretKeySpec skeySpec = new SecretKeySpec(raw, “AES”); // Instantiate […]

Java – 从配置文件加密/解密用户名和密码

我们正忙着为客户开发Java Web服务。 有两种可能的选择: 将加密的用户名/密码存储在Web服务客户端上。 从配置中读取。 在客户端文件,解密和发送。 将加密的用户名/密码存储在Web服务器上。 从配置中读取。 Web服务器上的文件,解密并在Web服务中使用。 Web服务使用用户名/密码来访问第三方应用程序。 客户端已经有提供此function的类,但这种方法涉及以明文forms发送用户名/密码(尽管在Intranet内)。 他们更喜欢存储信息。 在Web服务中,但并不真的想要支付他们已经拥有的东西。 (安全性不是一个重要的考虑因素,因为它只在其内部网中)。 所以我们在Java中需要快速简便的东西。 有什么建议? 服务器是Tomkat 5.5。 Web服务是Axis2。 我们应该使用什么加密/解密包? 关键商店怎么样? 我们应该使用什么配置机制? 这是否易于部署?

Java中的AES加密和C#中的解密

您好我已使用标准AES算法加密的加密hex字符串和密钥。 码: final String key = “=abcd!#Axd*G!pxP”; final javax.crypto.spec.SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), “AES”); final javax.crypto.Cipher cipher = Cipher.getInstance(“AES”); cipher.init(Cipher.ENCRYPT_MODE, keySpec); byte [] encryptedValue = cipher.doFinal(input.getBytes()); return new String(org.apache.commons.codec.binary.Hex.encodeHex(encryptedValue)); 现在我尝试使用C#代码解密它: RijndaelManaged rijndaelCipher = new RijndaelManaged(); // Assumed Mode and padding values. rijndaelCipher.Mode = CipherMode.ECB; rijndaelCipher.Padding = PaddingMode.None; // AssumedKeySize and BlockSize values. rijndaelCipher.KeySize = 0x80; […]