Encryption 当密钥具有特定长度(以位为单位)时,这意味着什么?
我正在学习一些基本的密码学相关编程,现在我正在学习diffie-hellman-merkle密钥交换。我在看一部电影,他们在那里解释它的数学原理Encryption 当密钥具有特定长度(以位为单位)时,这意味着什么?,encryption,cryptography,bit,Encryption,Cryptography,Bit,我正在学习一些基本的密码学相关编程,现在我正在学习diffie-hellman-merkle密钥交换。我在看一部电影,他们在那里解释它的数学原理 在视频中,他们说应该使用长度为2000或4000位的n。我在其他几个地方看到过这个密钥长度被当作比特来讨论,比如AES。但我不明白“比特长度”是什么意思。有一个2000位长的键意味着什么,所以如果我需要编写一个程序来创建或使用具有一定长度的键,我需要做什么?每个位可以是1或0。它是数字世界的基本单位。你可能知道,所有的数字最终要么是1,要么是0。1和0
在视频中,他们说应该使用长度为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之间
例如,该算法的域参数称为曲线:一组点和一组点。私钥是指定曲线上某一点的参数值,公钥是一对整数,它们是曲线上某一点的坐标。一般来说,由于私钥和公钥位于不同的数学空间中,因此有两个数字可以称为“密钥大小”。对于某些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这样的大多数非对称算法不能是随机的,因为密钥本身需要遵循某些特定的数学结构(具有特定属性的数字,可以编码为字节/位)。