Encryption 当密钥具有特定长度(以位为单位)时,这意味着什么?

Encryption 当密钥具有特定长度(以位为单位)时,这意味着什么?,encryption,cryptography,bit,Encryption,Cryptography,Bit,我正在学习一些基本的密码学相关编程,现在我正在学习diffie-hellman-merkle密钥交换。我在看一部电影,他们在那里解释它的数学原理 在视频中,他们说应该使用长度为2000或4000位的n。我在其他几个地方看到过这个密钥长度被当作比特来讨论,比如AES。但我不明白“比特长度”是什么意思。有一个2000位长的键意味着什么,所以如果我需要编写一个程序来创建或使用具有一定长度的键,我需要做什么?每个位可以是1或0。它是数字世界的基本单位。你可能知道,所有的数字最终要么是1,要么是0。1和0

我正在学习一些基本的密码学相关编程,现在我正在学习diffie-hellman-merkle密钥交换。我在看一部电影,他们在那里解释它的数学原理


在视频中,他们说应该使用长度为2000或4000位的n。我在其他几个地方看到过这个密钥长度被当作比特来讨论,比如AES。但我不明白“比特长度”是什么意思。有一个2000位长的键意味着什么,所以如果我需要编写一个程序来创建或使用具有一定长度的键,我需要做什么?

每个位可以是1或0。它是数字世界的基本单位。你可能知道,所有的数字最终要么是1,要么是0。1和0都是位


因此,长度为
n位的部分
意味着它有
n
1s和0s。

如果您需要编写一个程序来创建特定长度的键,您可以将所需的键长度传递给该程序。您需要知道长度是以哪个单位表示的(例如,某些接口可能需要字节而不是位),但通常不需要知道密钥长度在引擎盖下的含义

密钥长度的具体含义取决于加密方案,对于某些方案,“密钥长度”是什么可能存在歧义。这通常是三件事之一:

  • 与算法关联的字符串的长度,如键
  • 在2^(n-1)和(2^n)-1之间选取算法整数参数的数字n
  • 一个数字n,使得算法的整数参数选择在1(或其他小范围)和(2^n)-1之间
最后两种情况都称为“n位数字”。在密码学中,“n位数字”有时指的是一个可以用n位数写在基数2中的数字,有时指的是一个在基数2中正好需要n位数的数字。换句话说,“n位数字”有时指位大小正好为n的数字,有时指位大小最多为n的数字。您必须检查每个加密方案描述中的确切要求

根据加密方案,通常选择不同的数字作为“密钥长度”。对于任何特定的方案,较大的密钥长度都很难打破,但不能比较不同方案之间的密钥长度

对于大多数对称方案,密钥是随机生成的字符串(字符串的每个位都有独立的½概率为0或1),长度是字符串的位数。例如,AES-128是使用128位(16字节)密钥的AES。只有一个例外值得一提:密钥表示为64位字符串,但其中只有56位是随机的(其他8位是根据随机56计算的),因此DES有时被认为具有“56位”密钥长度,有时具有“64位”密钥长度

例如,密钥长度n是组的精确大小(通常写为p)。私钥和公钥都是介于1和p之间的数字,因此它们最多是n位数字。就非对称加密的密钥长度而言,这很简单

例如,密钥长度n是模数的精确大小,模数是公钥的一部分(公钥是一对数字:模数和公钥指数)。例如,4096位RSA表示模数介于2^4095和2^4096-1之间。私钥也是一个n位数字,但最多是一个n位数字

例如,有两个数字可以称为密钥长度,因为私钥和公钥是按大小不同的间隔选择的。公钥长度是较大素数p的大小;公钥是介于2和p-2之间的数字。私钥长度是较小素数q的大小;私钥是介于1和q-1之间的数字


例如,该算法的域参数称为曲线:一组点和一组点。私钥是指定曲线上某一点的参数值,公钥是一对整数,它们是曲线上某一点的坐标。一般来说,由于私钥和公钥位于不同的数学空间中,因此有两个数字可以称为“密钥大小”。对于某些m位数字n,私钥是介于1和n-1之间的数字,而公钥是具有两个坐标的点,对于某些m位数字n,每个坐标都在0和q之间ℓ-位号q。一般来说,m和ℓ 不一定要平等。但是,n和q通常很接近(如果不是,那么对于给定的安全级别来说,这是对性能的浪费),因此m和ℓ 通常是相等的,可以称为“键长”,没有歧义。

想想4位PIN码。每个数字都有一个介于0和9之间的值。因此,4位pin可以是0000到9999之间的任何数字。也就是说,该引脚有10^4=10000个可能值。现在,计算机用位(1和0)表示数字。如果一个键有2000位,这意味着它可以是00000…0到11111…1之间的任意值(长度为2000的0和1的任意组合)。这把钥匙没有钥匙。查阅“二进制数表示法”了解更多信息。“如果我需要编写一个程序来创建或使用特定长度的键,我需要做什么?”这取决于具体的算法。AES支持可以完全随机的特定长度的密钥。像RSA这样的大多数非对称算法不能是随机的,因为密钥本身需要遵循某些特定的数学结构(具有特定属性的数字,可以编码为字节/位)。