当前位置: 首页 > 知识库问答 >
问题:

Android上加密图像的对称与非对称加密

鞠通
2023-03-14

我试图创建一个Android应用程序,它可以动态加密数据并将其写入存储。已经实现了没有加密的应用程序,在stackoverflow上查看了100个加密示例/帖子,但无法决定使用哪种方法。

一开始想到使用AES,就在谷歌上搜索它的安全性。每次输入16或32个字符(我希望安全性更好)的密码似乎并不方便。作为一种替代的非对称加密方式,人们想到了。用一个密钥加密,用另一个密钥解密,这样我就可以将用于加密的密钥留在内存中,只有在需要解密数据时才使用另一个键(如在PC或其他应用程序上脱机)。

将被加密的文件主要是图像、视频、音频记录和办公文档。

第二种方法会留下任何漏洞吗?在AES和RSA之间,如果我需要平衡速度和安全性,哪一个更好?数据不是什么绝密,只是需要防止落入坏人之手。该设备未加密,正在运行KitKat。这两种方法抵御某种攻击的能力如何?

编辑:描述两种方法。

方法1:使用基于密码的AES加密,在应用程序启动时手动输入16/32个字符的密码,在某个时间/特定触发后从内存中清除密码。需要时再次输入密码。

方法2:使用基于私钥/公钥的RSA加密。留下一个密钥,用于设备上的加密。在解密过程中使用另一个密钥,这是很少执行的。

共有1个答案

段干华皓
2023-03-14

这个问题有点难回答,因为你实际上没有描述任何方法,你只是命名了两个加密算法。如果实现得当,这两种算法对于您的需求来说都非常安全。

重要的是要记住,RSA可以加密数据的时间不超过其密钥长度(减去一些用于填充),因此在大多数情况下,仅RSA是不够的。

如果您只是在单个设备上加密信息,并希望用户控制何时加密和解密信息,例如使用密码,则可以使用PBKDF2导出x长度的密钥(例如,对于AES256,32字节),并使用密码字符串作为输入。

如果您不打算利用RSA的不对称特性,请不要费心使用它。在大多数情况下(但不是全部),如果不涉及服务器或其他方,RSA是多余的。

你不怎么描述你的问题,但是如果是我,我会用AES。

使用AES时,请牢记以下几点:

  • 切勿使用ECB模式
  • 切勿使用纯ASCII字节作为密钥。您应该使用PBKDF2或类似方法来派生密钥,通常100000回合是好的
  • 始终使用安全的RNG来创建IV(如果您的密码模式使用一个,那么一些,如CTR,则使用nonce,但概念基本相同)
  • 始终记住,AES不能确保完整性。解密前,使用MAC检测密文中的更改
 类似资料:
  • 本文向大家介绍Android对称加密与非对称加密,包括了Android对称加密与非对称加密的使用技巧和注意事项,需要的朋友参考一下 凯撒密码 1. 介绍 凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3 的时候,所有的字母

  • 本文向大家介绍C#对称加密与非对称加密实例,包括了C#对称加密与非对称加密实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#对称加密与非对称加密的原理与实现方法,分享给大家供大家参考。具体分析如下: 一、对称加密(Symmetric Cryptography) 对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secr

  • 主要内容:1.对称加密,2.非对称加密,3.混合加密,4.常见的摘要算法1.对称加密 AES,密钥长度有128/256/192。高级加密标准,是下一代的加密算法标准,速度快,安全级别高; DES:密钥为56, 数据加密标准,速度较快,适用于加密大量数据的场合。 3DES: 密钥为168.是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 IDES: 密钥为128 SM1: 密钥为128 SM4: 密钥为128 RC4, RC5, RC6 DESX 两边用

  • 介绍 对于非对称加密,最常用的就是RSA和DSA,在Hutool中使用AsymmetricCrypto对象来负责加密解密。 非对称加密有公钥和私钥两个概念,私钥自己拥有,不能给别人,公钥公开。根据应用的不同,我们可以选择使用不同的密钥加密: 签名:使用私钥加密,公钥解密。用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改,但是不用来保证内容不被他人获得。 加密:用公钥加

  • 本文向大家介绍Android与服务器交互的方式中的对称加密和非对称加密是什么?相关面试题,主要包含被问及Android与服务器交互的方式中的对称加密和非对称加密是什么?时的应答技巧和注意事项,需要的朋友参考一下 对称加密,就是加密和解密数据都是使用同一个key,这方面的算法有DES。 非对称加密,加密和解密是使用不同的key。发送数据之前要先和服务端约定生成公钥和私钥,使用公钥加密的数据可以用私钥

  • 我想问一下,在使用非对称加密时,我们使用客户端的公钥加密数据,因此客户端可以使用他们的私钥解密数据,对吗? 我刚刚找到了使用RSA签署JWT的教程,但我发现它们使用服务器私钥而不是客户端的公钥加密数据,并且服务器的公钥在客户端之间共享。 安全吗?因为如果公钥因为可共享而落入坏人之手,每个人都可以正确解密? 那么,这样签jwt可以吗? 参考:教程1教程2