在Android中加密数据
我想在我的Android应用程序中加密数据。我对加密的当前状态几乎没有经验,无论是针对Android还是一般情况。我记得几年前,美国有法律禁止软件公司出口强大的加密技术。考虑到Android是开源代码,我不确定这些是否适用于今天 我想实现的是允许用户仅使用密码加密数据。我宁愿避免使用私钥/公钥,因为这可能需要用户输入这两个密钥。在我的应用程序中,用户应该能够使用密码加密/解密数据。他们的数据将从一个移动设备发送到另一个移动设备,在不知道密码的情况下,不可能在接收端解密他们的数据。我确实在发送数据时使用SSL,但这还不够好,因为数据需要在服务器上保持加密,然后才能中继到接收设备。如果黑客能够访问我的服务器,他们就有可能读取数据。出于这个原因,我想在发送设备上加密它,而只在接收设备上解密它 我需要解决的一些问题:在Android中加密数据,android,encryption,Android,Encryption,我想在我的Android应用程序中加密数据。我对加密的当前状态几乎没有经验,无论是针对Android还是一般情况。我记得几年前,美国有法律禁止软件公司出口强大的加密技术。考虑到Android是开源代码,我不确定这些是否适用于今天 我想实现的是允许用户仅使用密码加密数据。我宁愿避免使用私钥/公钥,因为这可能需要用户输入这两个密钥。在我的应用程序中,用户应该能够使用密码加密/解密数据。他们的数据将从一个移动设备发送到另一个移动设备,在不知道密码的情况下,不可能在接收端解密他们的数据。我确实在发送数据
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(clear);
最初,上述行是:
SecureRandom.getInstance("SHA1PRNG")
但是谷歌在4.0中改变了这一点,这导致了我的代码崩溃。使用我以前的代码加密的任何内容都无法再使用4.0的默认API进行解密。我个人认为这是谷歌的一个主要问题,因为他们破坏了兼容性。怎样才能阻止他们今后再次重复这一点?我的加密/解密不能依赖于谷歌选择破坏兼容性
我还被迫使用128位加密,因为显然并非所有设备都支持192位和256位,很可能是因为当地政府的法律
是否有一个加密API可以让我只使用
密码,但如果不是,那么我将考虑使用私有/公钥。< /P>
我编写了一个开源Java库,它使用256位AES使用密码加密数据。您可以在GitHub上找到此文件:。这与iOS项目兼容
这可能适用于Android,或者至少您可以看到代码的工作方式,并根据需要进行调整。(如果您发现它不能按您的意愿工作,请随时提出问题,我将调整库)
我可以使用的当前加密算法是什么?它们是什么
在国际上可用,还是美国对其使用有限制
他们
有无数的算法可用,但是如果你坚持一些非常标准的东西,比如AES,你会很好
据我所知,美国仍然禁止出口使用256位AES密钥大小的软件。其他国家也可能有其他限制。但我不是律师
创建自己的自定义加密算法和
不时对其进行修改,以防止黑客轻易破解
信息技术或者你会阻止这样做吗
不要这样做。始终使用经过广泛同行审查的著名算法。应该没有必要定期更改您选择的算法,除非已知它已被破坏。我不明白这一部分:“在不知道密码的情况下,不可能在接收端解密他们的数据”。攻击者不能像接收端那样恢复消息吗?当然,黑客可以。要么黑客首先必须破解通过互联网传输的数据,这意味着同时破解SSL和加密数据,要么他们必须破解我服务器上的数据。如果他们无法通过互联网数据或访问我的服务器,那么他们必须访问接收数据的移动设备。这要难得多。没有加密是100%安全的,但是在我的服务器上留下未加密的数据并且只依赖SSL将是一个严重的错误。基本上,我想要双重加密,以使数据解密变得非常困难。对不起,我忽略了那句话中的“不是”,现在才有意义。如果Java是任何指标,那么限制仅适用于几个司法管辖区(例如“恐怖国家”)。AES 256的使用当然不是被禁止的,而且这些限制仅限于从美国出口。AES-192和AES-256具有这些限制。当然,这些限制完全是卡夫卡式的。就我们所知,AES1-28是无法被打破的,我们可以放心,那些“邪恶”的司法管辖区一点也不在乎。注意:我不是律师,这不是法律建议。@owlstead好的评论,我已经调整了我关于美国出口管制的措辞。