当前位置: 首页 > 面试题库 >

Android使用AES进行加密/解密

苏乐
2023-03-14
问题内容

有没有一个很好的示例,说明如何在Android上使用AES 加密和解密图像及其他文件


问题答案:
private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
    byte[] encrypted = cipher.doFinal(clear);
    return encrypted;
}

private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, skeySpec);
    byte[] decrypted = cipher.doFinal(encrypted);
    return decrypted;
}

并像这样调用它们:

ByteArrayOutputStream baos = new ByteArrayOutputStream();  
bm.compress(Bitmap.CompressFormat.PNG, 100, baos); // bm is the bitmap object   
byte[] b = baos.toByteArray();  

byte[] keyStart = "this is a key".getBytes();
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed(keyStart);
kgen.init(128, sr); // 192 and 256 bits may not be available
SecretKey skey = kgen.generateKey();
byte[] key = skey.getEncoded();    

// encrypt
byte[] encryptedData = encrypt(key,b);
// decrypt
byte[] decryptedData = decrypt(key,encryptedData);

这应该可行,我现在在项目中使用类似的代码。



 类似资料:
  • 问题内容: 这是我正在做的事情,可能看起来有些笨拙,但是可以帮助您解决该问题。我得到一个。阅读几乎所有相关主题,但找不到合适的解决方案。我是加密解密程序设计的新手,需要在我的Java应用程序之一中实现它。 谢谢..这就是代码的样子.... 问题答案: 在这里,您需要了解的是密文可能包含不可打印的字符。因此,当您使用readLine()时,它可能不会为您提供文件中的所有字节。 同样,它并没有给您您认

  • 以下是我的加密/解密方法: 所以现在当我尝试加密时,我得到了这个异常: 我已经尝试在encrypt和Decrpt中使用密码实例。它只用于加密而不用于解密。我认为需要填充,因为数据大小不是16字节的倍数。“data”字节长度打印为,因此尝试将字符附加到数据中,然后进行加密,但也不起作用。

  • 问题内容: 我之所以写这个问题+答案,是因为我挣扎了很多(也许是因为缺乏经验),并迷失了使用node或python进行加密/解密的许多不同方式。 我以为我的案子将来可以帮助人们。 我需要做的是: 从表单获取数据,使用Crypto(node-js)对其进行加密 在Python中传递加密的数据,然后使用PyCrypto将其解密。 我选择使用AES加密。 这是我的开始方式(我不会尝试的所有事情): 我遵

  • 问题内容: 我必须使用openssl命令行或C api加密xml文件。输出应为Base64。 一个Java程序将用于解密。该程序由客户提供,不能更改(他们正在将这些代码用于旧版应用程序)。正如您在下面的代码中看到的那样,客户提供了一个密码短语,因此将使用SecretKeySpec方法生成密钥。 Java代码: 我已经测试了几个命令,例如: 但是,使用Java无法成功解密给定的输出。为了进行测试,我

  • 我正在尝试将我的应用程序从128位AES密钥升级为256位AES。然而,当我将第54行从128更改为256时,我会得到以下密钥大小错误。 java.security.无效密钥异常: 非法的密钥大小 我已正确安装了JCE文件,我的应用程序生成较长的密钥这一事实证明了这一点。 我在其他文章中看到过“AES / CBC / PKCS7Padding”加密方法,但这只会让我遇到这个例外:

  • 我试图在Android和PHP端使用AES加密/解密数据,并累犯空答案。 首先,我在Android中生成了对称密钥: 在服务器端,我试图解密数据。我可以解密(从RSA)秘密的AES密钥,并得到它的字符串表示。在客户端(Android)和服务器端(PHP)上是一样的。但是如何使用这个字符串AES密钥来解密数据呢?我尝试了这个(PHP): PHP中的结果: 怎么啦?