标签: symmetric-key

为什么在对对称算法的蛮力攻击中,尝试一半后有 50% 的机会找到密钥?

任何密码学文本都提到,在对对称算法的蛮力攻击中,在尝试一半后有 50% 的机会找到密钥。

例如,具有 56 位密钥的 DES 在前 2 55 次尝试后将有 50% 的机会找到密钥。

为什么在对任何对称加密算法的蛮力攻击中,尝试一半后有 50% 的机会找到密钥?它的数学证明是什么?

encryption cryptography symmetric-key encryption-symmetric

3
推荐指数
1
解决办法
1568
查看次数

Xcode 11 Swift 5 CryptoKit 共享 SymmetricKey

我开始学习使用 CryptoKit 进行解密/加密。一切正常,但我无法共享生成的 SymmetricKey。

例子:

let key = SymmetricKey(size: .bits256)
Run Code Online (Sandbox Code Playgroud)

好吧,我生成了一个对称密钥。现在我想分享密钥,但我该怎么做呢?在调试器中,变量是空的?我检查了加密和解密 - 运行良好 - 输出显示加密和解密的数据。如何保存我的可变以进行分发?

我找到了一个解决方案:

let savedKey = key.withUnsafeBytes {Data(Array($0)).base64EncodedString()}
Run Code Online (Sandbox Code Playgroud)

这很好用,但是如何将变量savedKey (String)保存回变量(SymmetricKey)?

xcode share symmetric-key swift

3
推荐指数
1
解决办法
1268
查看次数

如果我们用AES密钥包装256位AES密钥,那么包装的密钥的大小可以超过32个字节吗?

我有一段代码用AES密钥包装对称密钥(AES):

  1. swkKey:这是用于包装的AES密钥。
  2. 密钥:要包装的密钥。

码:

SecretKey swkKeySpec = new SecretKeySpec(swkKey, 0, swkKey.length, "AES");
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding", "BC");
final int ivLength = 12;
final IvParameterSpec iv = createIV(ivLength);///Creates a new array.
cipher.init(Cipher.WRAP_MODE, swkKeySpec, iv);
SecretKey sKeySpec = new SecretKeySpec(key, 0, key.length, "AES");
byte[] wrappedAppKey = cipher.wrap(sKeySpec);`
Run Code Online (Sandbox Code Playgroud)

如果key是256位,而swkkey是256位,则wrappedAppKey的长度是多少。包装的密钥可以超过32个字节吗?请注意,在这种情况下,我将收到以下日志:

key length: 32(key to be wrapped)
swkKey length: 32(key used to wrap)
wrappedAppKey size: 48(final wrapped key output).
Run Code Online (Sandbox Code Playgroud)

java encryption cryptography symmetric-key aes

2
推荐指数
1
解决办法
140
查看次数

Rijndael管理密钥生成

我需要加密数据并将其存储在一个文件中,然后才能将其解密.为此,我使用RijndaelManaged类.现在我不想在代码中保持密钥的硬编码.经过一些谷歌搜索后我发现了这种方法 -

这里生成了密钥,但是密码,盐和IV等所有其他值都是硬编码的.我没有让用户输入密码的选项,因此我还必须对这些值进行硬编码.那真的很安全吗?一些黑客能不能使用工具来找到这些硬编码值并弄清楚关键?

.net encryption symmetric-key rijndaelmanaged

0
推荐指数
1
解决办法
1033
查看次数

对称加密中密码的目的是什么?

我发现Python包加密了一些数据,并在python Cryptography中看到了这一点:

可以使用密码与Fernet(对称密钥).为此,您需要通过密钥派生函数(如PBKDF2HMAC,bcrypt或scrypt)运行密码.

但是,事实证明密码的工作方式与密钥相同(使用密码/密钥进行加密/解密).那么为什么还要使用密码而不是密钥呢?

我的意思是为什么不只是使用密钥本身:

from cryptography.fernet import Fernet
key = Fernet.generate_key()
token = Fernet(key).encrypt(b"my deep dark secret")
Fernet(key).decrypt(token)
Run Code Online (Sandbox Code Playgroud)

python security passwords cryptography symmetric-key

0
推荐指数
1
解决办法
390
查看次数