基于密码的加密技术如何工作?

16 encryption passwords

假设我有一些数据和密码,我想以这样的方式加密数据,即只能使用正确的密码恢复.

这在技术上如何工作(即如何实现)?我经常听到人们使用bithifting进行加密,但是你如何根据密码进行加密?基于密码的加密如何工作?

一个例子是Mac OS X FileVault

谢谢.


如果您提供示例代码,最好是C,Objective-C或伪代码.

sle*_*ske 19

对于(对称)加密,您需要一个用于加密和解密的密钥.

通常,您提供的密码将用作此密钥的来源.出于各种安全原因,密码不是(并且通常不能,由于所使用的密码的要求)直接用作密钥.相反,密钥派生函数用于从密码生成密钥.

这就是加密密码必须长且相当随机的原因:否则生成的密钥只会来自可能密钥的一小部分,然后可以简单地尝试这些密钥,从而强制加密.

至于代码示例,有几种可能性:

  • 查看加密库的源代码,例如OpenSSL
  • 查看实现加密的程序的源代码,例如GnuPG
  • 谷歌一些简单加密算法或密钥派生函数的示例源代码,并尝试理解它

这取决于您想要学习的内容.


Str*_*ior 6

您需要查看其他资源以获得深入的解释,因为这个问题非常广泛.

一般来说:你使用密码作为加密密钥的"种子",正如sleske指出的那样.然后使用此密钥应用双向加密算法(即可以应用一次以加密并再次解密的算法).当您将算法应用于某个数据时,它会以这样的方式加密,即如果不使用相同的密钥,您再也无法将数据重新取出,并且如果没有相同的密码,您实际上无法生成相同的密钥.种子


Mic*_*l K 0

一种简单但不完全安全的方法是将每个字节旋转由密码确定的数字。您可以使用字符串中的哈希码,或者计算字符数,或者其他任何数字。

不过,您可能想到的是公钥加密。这里有一个文档的链接,它会告诉你它的数学原理 - 你必须自己计算出实现细节,但一旦你理解了数学原理,它就不那么难了。 http://mathaware.org/mam/06/Kaliski.pdf