加密服务器上的数据并在客户端解密

时间:2015-10-12 11:32:22

标签: javascript python ios swift encryption

我有一个非常简单的iOS和Android应用程序,可以从Web服务器下载txt文件并将其预设给用户。我正在寻找一种方法,只有应用程序才能读取文件,所以没有其他人可以下载和使用它。

我想获取计算机上的文件,以某种方式对其进行加密,将结果上传到服务器,当客户端下载文件时,它将知道如何阅读它。

这种事情最简单的方法是什么?

非常感谢!

3 个答案:

答案 0 :(得分:1)

好吧,要加密/解密文件(或任何东西,真的),你需要一个算法来加密/解密和密钥。如果您使用对称加密算法(例如AES),则使用相同的算法和密钥进行僵尸加密和解密。

简而言之,您正在寻找一种对称加密算法,例如AES,您可以在这里找到(以及其他工具) - https://pypi.python.org/pypi/pycrypto

现在假设您有一个用户注册系统(或者要求输入密码),您可以使用用户密码+ salt作为安全随机数生成器(例如Blum-Blum-Shub)的种子来生成密钥对于每个用户(以及每个这样的用户的常量密钥),在客户端加密/解密文件。请注意,这将导致用于加密同一用户的每个文件的相同密钥。要获得更多熵,您可以(例如)将文件名组合到密钥中,以便每个文件都有不同的密钥。

答案 1 :(得分:-3)

您可以编写自己的加密算法,也可以使用C库中的现有加密算法(https://en.wikipedia.org/wiki/Comparison_of_Cryptography_Libraries),或者使用java中的Android,即充气城堡海绵城堡

另见此主题:BouncyCastle on Android

答案 2 :(得分:-3)

这是一个非常广泛的问题和各种方法。 首先,您需要选择加密方法和加密数据的目的。

有三种主要的加密方法:

1。对称加密

Encrypter和Decrypter可以访问相同的密钥。它很容易,但它有一个很大的缺点 - 需要共享密钥,所以如果你把它放到客户端它就会被盗和被滥用。

作为解决方案,您需要使用其他方法来发送密钥并在客户端上对其进行加密。

2。非对称加密

使用非对称加密,情况有所不同。要加密数据,您需要使用公钥/私钥对。

公钥通常用于加密数据,但只能使用私钥进行解密。因此,您可以将公钥分发给您的客户,并且他们可以将一些加密的流量发送给您。

但是,您仍然需要确保使用正确的公钥,而不是滥用加密。

通常,它用于TLS(SSL),SSH,签名更新等。

3。哈希(它不是真正的加密)

这是最简单的。使用散列,您可以生成一些无法恢复的弹簧,但规则是相同的数据将产生相同的散列。

因此,您可以选择最合适的方法,并尝试使用您使用的语言找到合适的包。